【发布时间】:2015-05-22 19:32:43
【问题描述】:
我正在尝试用 python 开发一个聊天程序。我希望它有多个客户端,所以我使用线程来处理这个。但是,当我尝试将消息发送到所有连接的客户端时,服务器仅将其发送给发送消息的客户端。我不确定我是否只是遗漏了一些明显的东西,但这里是服务器的代码:
import socket
from thread import *
host = '192.168.0.13'
port = 1024
users = int(input("enter number of users: "))
def clienthandler(conn):
while True:
data = conn.recv(1024)
if not data:
break
print data
conn.sendall(data)
conn.close()
serversock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversock.bind((host, port))
serversock.listen(users)
for i in range(users):
conn, addr= serversock.accept()
print 'Connected by', addr
start_new_thread(clienthandler, (conn,))
这是客户端的代码:
import socket
host = '192.168.0.13'
port = 1024
usrname = raw_input("enter a username: ")
usrname = usrname + ": "
clientsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsock.connect((host, port))
while True:
x = raw_input('You: ')
x = usrname + x
clientsock.sendall(x)
data = clientsock.recv(1024)
print data
【问题讨论】:
-
因为你告诉他要为写信的人服务(通过将
conn传递给start_new_thread)。
标签: python multithreading sockets