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

Reply via email to