0
我正在學習Python上的多線程和套接字,但遇到了一個問題。我正在嘗試創建一臺服務器,可以從同一臺計算機上的多個客戶端接收和打印數據。這是到目前爲止,我的服務器代碼:同一臺計算機上的多個套接字線程
import socket
import threading
def conn(HOST, PORT, BUFSIZE):
serversock = RecvConnection(HOST, PORT)
serversock.listen(BUFSIZE)
class RecvConnection(object):
def __init__(self,host, port, sock=None):
if sock == None:
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
else:
self.sock = sock
self.sock.bind((host, port))
def listen(self, buffsize):
self.sock.listen(5)
clisock, (remhost, remport) = self.sock.accept()
while 1:
print clisock.recv(buffsize)
HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
threading.Thread(target=conn, args=(HOST, PORT, BUFSIZ,)).start()
的問題是,只有一個我的客戶端文件的情況下似乎是由我的服務器來處理,所以只顯示我的客戶端的第一個實例發送數據。這裏是我的客戶端代碼:
import socket
import threading
class CreateConnection(object):
def __init__(self, sock=None):
if sock is None:
# Create a socket
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
else:
self.sock = sock
def connect(self, host, port):
# Connect to host, port
self.sock.connect((host, port))
class Communication(CreateConnection):
def sendMsg(self, msg):
self.sock.send(msg)
HOST = 'localhost'
PORT = 21567
cltsock = Communication()
cltsock.connect(HOST, PORT)
while 1:
msg = raw_input('> ')
cltsock.sendMsg(msg)
任何人都可以幫助我做到這一點? 謝謝!
這是我一直在試圖與我threading.Thread線做...我試圖把它放在一個雖然1但我們只是說它給了我一個非常錯誤的:P – Estarius
我已經擴大了我的答案。 – MRAB
您的主張完美無缺,對不起延期!非常感謝。但是,如果有人嘗試它,請不要忘記在線程末尾添加.start() – Estarius