如何创建总是接收数据的主机套接字。 python

如何创建总是接收数据的主机套接字。 python

问题描述:

出于某种原因,我似乎无法创建一个主机或客户端,客户端可以随时向主机发送消息。我只能发送一条消息,之后没有收到任何消息。如何创建总是接收数据的主机套接字。 python

我while循环应该允许我做这件事,所以我不知道这是为什么,我没有实现的;“()

#Host server 

    import socket 

    server_host= 'localhost' 
    server_port= 88 

    server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 

    server.bind((server_host,server_port)) 

    server.listen(5) 

    print('listening on {} port {}'.format(server_host,server_port)) 


    while True: 
     client,addr = server.accept() 

     recieve = client.recv(2024) 
     print(recieve.decode()) 

客户:

# Python-Socket-Client 

import socket 

#'localhost' 
# 88 
target_server = str(input('Target_Host:')) 
target_port = int(input('Target_Port:')) 

client = socket.socket(socket.AF_INET , socket.SOCK_STREAM) 

client.connect((target_server,target_port)) 
print('\n') 
print('****************************') 
print(target_server) 
print(target_port) 

def send_and_recieve_message(message): 


    #response = client.recv(4065) 
    if type(message) == str: 
     client.send(message.encode()) 





while True: 
    mess= input("{}:".format('Client')) 
    send_and_recieve_message(mess) 

在您的主机代码server.accept()是一个阻塞调用。它会等到有人连接。你需要将它从while循环中分离出来。然后检查连接是否仍然有效,如果不等待另一个连接。

while True: 

    client,addr = server.accept() 

    while client != None: 
     recieve = client.recv(2024) 
     print(recieve.decode()) 

与此类似的东西,您可能希望添加更好的检查以查看连接是否仍然有效。