Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import socket
- from threading import Thread
- from Queue import Queue
- from time import sleep
- import json
- class ClientThread(Thread):
- def __init__(self, connection):
- super(ClientThread, self).__init__()
- self.recv = connection.recv
- self.send = connection.send
- self.que = Queue()
- def run(self):
- while True:
- cmd = self.que.get()
- self.send(json.dumps(cmd))
- if cmd == 'exit':
- break
- class Control:
- def __init__(self):
- print 'Started server script.'
- s = Server()
- s.start()
- self.que = s.que
- self.loop()
- def loop(self):
- while True:
- cmd = raw_input('> ')
- if cmd == 'exit':
- self.que.put(cmd)
- break
- else:
- self.que.put(cmd)
- class Server(Thread):
- clients = []
- def __init__(self):
- super(Server, self).__init__()
- self.que = Queue()
- def run(self):
- self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- self.server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- server_address = ("localhost", 9006)
- self.server.bind(server_address)
- self.server.listen(5)
- while True:
- if not self.que.empty():
- cmd = self.que.get()
- if cmd.split(' ')[0] == 'accept':
- self.loop(int(cmd.split(' ')[1]))
- continue
- for client in self.clients:
- client.que.put(cmd)
- if cmd == 'exit':
- break
- else:
- sleep(0.1)
- for client in self.clients:
- client.join()
- def loop(self, iterations):
- for i in xrange(iterations):
- #print '\nAwaiting %i clients.' % num
- connection, client_address = self.server.accept()
- c = ClientThread(connection)
- self.clients.append(c)
- c.start()
- if __name__ == '__main__':
- c = Control()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement