Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=vmexam.git;a=commitdiff;h=5c4e65a58713973382d62701825227d7891ed42f
commit 5c4e65a58713973382d62701825227d7891ed42f Author: Miklos Vajna <[EMAIL PROTECTED]> Date: Wed Nov 7 22:04:52 2007 +0100 python: add an example on how to write simple tcp clients/servers diff --git a/python/server/client.py b/python/server/client.py new file mode 100644 index 0000000..727fca9 --- /dev/null +++ b/python/server/client.py @@ -0,0 +1,16 @@ +import pickle +import socket + +# Connect to the server: +client = socket.socket ( socket.AF_INET, socket.SOCK_STREAM ) +client.connect ( ( 'localhost', 2727 ) ) + +# Retrieve and unpickle the list object: +print pickle.loads ( client.recv ( 1024 ) ) + +# Send some messages: +for x in xrange ( 10 ): + client.send ( 'Hey. ' + str ( x ) + '\n' ) + +# Close the connection +client.close() diff --git a/python/server/client_multi.py b/python/server/client_multi.py new file mode 100644 index 0000000..e4fe828 --- /dev/null +++ b/python/server/client_multi.py @@ -0,0 +1,27 @@ +import pickle +import socket +import threading, time + +# Here's our thread: +class ConnectionThread ( threading.Thread ): + + def run ( self ): + + # Connect to the server: + client = socket.socket ( socket.AF_INET, socket.SOCK_STREAM ) + client.connect ( ( 'localhost', 2727 ) ) + + # Retrieve and unpickle the list object: + print pickle.loads ( client.recv ( 1024 ) ) + + # Send some messages: + for x in range ( 10 ): + client.send ( 'Hey. ' + str ( x ) + '\n' ) + + time.sleep(1) + # Close the connection + client.close() + +# Let's spawn a few threads: +for x in range ( 2 ): + ConnectionThread().start() diff --git a/python/server/server.py b/python/server/server.py new file mode 100644 index 0000000..d3e6189 --- /dev/null +++ b/python/server/server.py @@ -0,0 +1,36 @@ +import pickle +import socket +import threading + +# We'll pickle a list of numbers: +someList = [ 1, 2, 7, 9, 0 ] +pickledList = pickle.dumps ( someList ) + +# Our thread class: +class ClientThread ( threading.Thread ): + + # Override Thread's __init__ method to accept the parameters needed: + def __init__ ( self, channel, details ): + + self.channel = channel + self.details = details + threading.Thread.__init__ ( self ) + + def run ( self ): + + print 'Received connection:', self.details [ 0 ] + self.channel.send ( pickledList ) + for x in xrange ( 10 ): + print self.channel.recv ( 1024 ) + self.channel.close() + print 'Closed connection:', self.details [ 0 ] + +# Set up the server: +server = socket.socket ( socket.AF_INET, socket.SOCK_STREAM ) +server.bind ( ( '', 2727 ) ) +server.listen ( 5 ) + +# Have the server serve "forever": +while True: + channel, details = server.accept() + ClientThread ( channel, details ).start() _______________________________________________ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git