【问题标题】:client and server receive and send only once客户端和服务器只接收和发送一次
【发布时间】:2020-01-28 05:18:14
【问题描述】:

我编写了服务器和客户端,它们似乎只通信一次。我尝试了几种方法来修复它,但没有运气。我试图把 '\n' 放在字符串的末尾,但没有改变。有人可以帮忙吗? 服务器代码:

    # server
    import socket

    SERVER_IP = '0.0.0.0'
    DEST_PORT = 1731

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

    server_socket.bind((SERVER_IP,DEST_PORT))
    server_socket.listen(1)

    client_socket,address=server_socket.accept()

    for i in range(2):
        data = client_socket.recv(512).decode()
        client_socket.sendall(("hello"+data+'\n').encode())
        data1 = client_socket.recv(512).decode()
        print(data1)

    client_socket.close()
    server_socket.close()



    #client
    import socket

    HOST_IP = '127.0.0.1'
    DEST_PORT = 1731


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

    my_socket.connect((HOST_IP,DEST_PORT))
    user_msg = input("Enter massage:")
    for i in range(2):
        my_socket.sendall(user_msg.encode())
        data = my_socket.recv(512).decode()
        print(data)
        my_socket.sendall("hiii\n".encode())

    my_socket.close()

【问题讨论】:

  • 而不是for i in range(2): 使用while True
  • 谢谢。它不能解决问题。仍然有一些数据没有发送和接收。
  • 将 user_input 保留在 while 循环中
  • 非常感谢。问题解决了。

标签: python sockets


【解决方案1】:

对我有用,但由于您在客户端循环之外获取输入,因此两次迭代是瞬时的:

  • 客户端发送输入
  • 服务器回复输入
  • 客户端发送最后一条消息并循环
  • 服务器接收并打印消息并循环
  • 客户端重新发送输入
  • 客户端以再次收到的相同输入回复
  • 客户端发送最后一条消息并退出
  • 服务器打印最后一条消息并退出

打印更清晰的消息时,这一点非常清楚(前缀是打印的那一侧):

Enter massage:test message <- client sends this, server replies with "ping <message>"
[client] ping test message <- client prints response, sends final message and loops around
[server] pong <- server prints second message it got, loops around
[client] ping test message <- client prints response it got from server bouncing message again
[client] stop <- client exits
[server] pong <- server gets second message of loop
[server] stop <- and exits

【讨论】:

    猜你喜欢
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2017-08-20
    • 2012-12-14
    相关资源
    最近更新 更多