Skip to content

Instantly share code, notes, and snippets.

@sayantanHack
Last active June 2, 2019 09:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sayantanHack/47445c8df79c1b07b2708c8345ddfe5e to your computer and use it in GitHub Desktop.
Save sayantanHack/47445c8df79c1b07b2708c8345ddfe5e to your computer and use it in GitHub Desktop.
import socket
import threading
import sys
# ================= This is Server ===============
class Server:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connections = []
def __init__(self):
self.sock.bind(('0.0.0.0',10000))
self.sock.listen(1)
def handle(self, c,a):
while True:
data = c.recv(1024)
for connection in self.connections:
connection.send(data)
if not data:
print(str(a[0]) + ':' + str(a[1]), "Disconnected")
self.connections.remove(c)
c.close()
break
def run(self):
while True:
c, a =self.sock.accept()
cThread = threading.Thread(target=self.handler, args=(c,a))
cThread.daemon = True
cThread.start()
self.connections.append(c)
print(str(a[0]) + ':' + str(a[1]), "Connected")
#================== This is Client ==========
class Client:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def sendMsg(self):
while True:
self.sock.send(bytes(input(""), 'utf-8'))
def __init__(self, address):
self.sock.connect((address, 10000))
iThread = threading.Thread(target=self.ssendMsg)
iThread.daemon = True
iThread.start()
while True:
data = self.sock.recv(1024)
if not data:
break
print(str(data, "utf-8"))
if (len(sys.argv) > 1):
client = Client(sys.argv[1])
else:
server = Server()
server.run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment