【问题标题】:How to create host socket that always recieves data . python如何创建始终接收数据的主机套接字。 Python
【发布时间】:2018-03-04 12:29:30
【问题描述】:

由于某种原因,我似乎无法创建一个主机或客户端,客户端可以随时向主机发送消息。我只能发送一条消息,之后什么都没有收到。

我的 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)

【问题讨论】:

    标签: python python-3.x sockets tcp tcpclient


    【解决方案1】:

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

    while True:
    
        client,addr = server.accept()
    
        while client != None:
            recieve = client.recv(2024)
            print(recieve.decode())
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多