Skip to content

Instantly share code, notes, and snippets.

@muatik
Created November 5, 2014 12:39
Show Gist options
  • Select an option

  • Save muatik/9ac6f7a1ae35e0e40a0d to your computer and use it in GitHub Desktop.

Select an option

Save muatik/9ac6f7a1ae35e0e40a0d to your computer and use it in GitHub Desktop.
a very first example of sockets in python
import socket
import select
class Server(object):
def __init__(self):
self.port = 8002
self.socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
self.socket.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 )
self.socket.bind(('', self.port))
self.socket.listen(5)
self.descriptors = [self.socket]
print 'ChatServer started on port {}'.format(self.port)
def run(self):
while 1:
(sread, swrite, sexc) = select.select(self.descriptors, [], [] )
for socket in sread:
if socket == self.socket:
self.accept()
else:
inputdata = socket.recv(4096)
if inputdata == '':
self.descriptors.remove(socket)
print 'client disconneted {}'.format(socket.getpeername())
else:
print 'new message {} {}'.format(inputdata, socket.getpeername())
self.broadcast('new message {} {}'.format(inputdata, socket.getpeername()), '')
def accept(self):
conn, (remhost, remport) = self.socket.accept()
self.descriptors.append(conn)
conn.send("You're connected to the Python chatserver\r\n")
str = 'Client joined %s:%s\r\n' % (remhost, remport)
self.broadcast(str, conn)
def broadcast(self, message, omit_socket):
for socket in self.descriptors:
if socket != self.socket and omit_socket != socket:
socket.send(message)
server = Server()
server.run()
@muatik
Copy link
Author

muatik commented Nov 5, 2014

You can read the whole story at this page: http://www.ibm.com/developerworks/linux/tutorials/l-pysocks/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment