因此,我写了一个多客户端聊天,我想显示在消息前面的每个客户端的名称。当我在main函数中打印变量“client\u name”(行“clients\u dictionary[current_套接字.getpeername()]“返回它应该返回的值,不返回任何值)它本身显示良好,但是,当我尝试将它连接到消息体(“data=client\u name+”:“+data”)时,它打印为“变量data中的任何内容”。我做错什么了?你知道吗
import socket
import select
HOST = ""
PORT = ""
open_client_sockets = []
messages_to_send = []
clients_dictionary = {}
def handle(server_socket):
client_socket, client_address = server_socket.accept()
open_client_sockets.append(client_socket)
client_name = client_socket.recv(1024)
clients_dictionary[client_address] = client_name
def main():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((HOST, PORT))
server_socket.listen(10)
while True:
r, w, x = select.select([server_socket] + open_client_sockets, open_client_sockets, [])
for current_socket in r:
if current_socket == server_socket:
handle(server_socket)
else:
try:
data = current_socket.recv(1024)
except socket.error:
data = ""
if data == "":
open_client_sockets.remove(current_socket)
else:
client_name = clients_dictionary[current_socket.getpeername()]
data = ": " + data
data = client_name + data
print data
messages_to_send.append((current_socket, data))
w.remove(current_socket)
for client_socket in w:
if client_socket != current_socket:
client_socket.send(data)
if __name__ == "__main__":
main()
无论如何,最好使用python字符串格式:
相关问题 更多 >
编程相关推荐