如何创建始终接收数据的主机套接字。 python
How to create host socket that always recieves data . 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())
与此类似的内容,您可能希望添加更好的检查以查看连接是否仍然有效。
出于某种原因,我似乎无法创建一个主机或客户端,客户端可以随时向主机发送消息。我只能发送一条消息,之后什么也没有收到。
我的 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())
与此类似的内容,您可能希望添加更好的检查以查看连接是否仍然有效。