各クライアントが 3 つのスレッドを作成し、複数のクライアントが一度に接続できる、かなり基本的なクライアント/サーバー コードがあるとします。サーバーに着信接続を待機させ、接続の取得を開始したら、実行中のスレッドがなくなるまで実行してから終了します。コードは以下のようになります。(つまり、サーバーが「永久に機能する」のではなく、すべてのスレッドが終了したらサーバーを終了させたい)。
編集:サーバーが着信接続を待機するようにします。接続が開始されると、実行中のスレッドがなくなるまで接続を受け入れ続け、終了します。これらの接続はやや散発的です。
import socket
import threading
# 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 ( 'hello from server' )
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()