【问题标题】:How to check if bytes are received from the client?如何检查是否从客户端收到字节?
【发布时间】:2020-07-09 11:44:51
【问题描述】:

我正在制作一个聊天界面,目前,服务器必须先发送一条消息才能聊天。

如果客户端先发送一条消息,那么在服务器向客户端发送一条消息之前,服务器无法看到该消息。

我的问题:

  1. 如何检查客户是否向我发送了任何内容?然后我可以简单地打印出来。

这是服务器代码:


serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serv.bind(("", 8080))
serv.listen(5)
while True:
    c, addr = serv.accept()

    print("Connection recieved from", addr)
    while True:
        strig = str(input("Enter your message to the client: "))
        c.send(strig.encode())

        thing = c.recv(1024)
        message = list(str(thing))
        message.remove("b")
        printable = ""

        for item in message:
            printable += item
        print(printable)

        strig = str(input("Enter your message to the client: "))
        c.send(strig.encode())

        thing = c.recv(1024)
        message = list(str(thing))
        message.remove("b")
        printable = ""

        for item in message:
            printable += item
        print(printable)

这是客户端代码:

from time import sleep
s = socket.socket()

port = 8080

s.connect(("10.0.0.92", port))
while True:
    thing = str(s.recv(1024))
    message = list(thing)
    message.remove("b")
    #message.remove("/")
    printable = ""
    for item in message:
        printable += item
    print(printable)

    your = str(input("Enter your message to the server: "))
    s.send(your.encode())

    thing = str(s.recv(1024))
    message = list(thing)
    message.remove("b")
    #message.remove("/")
    printable = ""
    for item in message:
        printable += item
    print(printable)

    your = str(input("Enter your message to the server: "))
    s.send(your.encode())

提前致谢!!

附言我希望一个人做服务器,一个人做客户端。请不要告诉我让两个人成为客户。

【问题讨论】:

    标签: python python-3.x sockets python-3.5 python-sockets


    【解决方案1】:

    您的服务器是单线程的。 input 等待输入,因此在没有用户输入的情况下永远不会到达 recv。创建一个线程来读取客户端输入和一个线程来请求和发送消息。在客户端你需要类似的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-12
      • 2011-10-22
      • 2013-01-16
      • 2011-10-23
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多