【问题标题】:Python UDP-Receive buffer being overwrittenPython UDP-接收缓冲区被覆盖
【发布时间】:2014-12-28 12:46:51
【问题描述】:

我有一个客户端(用 Python 编写)和一个服务器(用 C 编写)

这是我的 python udp 客户端代码的一部分:

    for x in range(noResults):
     fName, addr = sock.recvfrom(1000)
     print "Name:", fName
     resultList[x].name=fName.strip('\x00')
     fSize, addr = sock.recvfrom(1000)
     print "Size:", fSize
     resultList[x].size=fSize.strip('\x00')
     fPort, addr = sock.recvfrom(1000)
     print "Port:", fPort
     resultList[x].port=fPort.strip('\x00')
     fIP, addr = sock.recvfrom(1000)
     print "IP:", fIP
     resultList[x].ip=fIP.strip('\x00')
     sys.stdout.flush()
     print "IP:",resultList[x].ip
     i=i+1

虽然它与服务器通信后产生的输出(用C编写)是:

名称:travel Prague.mp4
尺寸:1936l 布拉格.mp4
端口:5008l 布拉格.mp4
IP:127.0.0.1gue.mp4
IP:127.0.0.1gue.mp4

我该如何解决这个问题?

【问题讨论】:

  • 预期输出是什么?您可以发布整个代码(以及服务器的详细信息吗?)
  • @smushi 此循环的预期输出不会像大小、端口、IP 那样覆盖
  • 我认为问题在于您的服务器,而不是客户端。如果有疑问,请使用 tcpdump/wireshark 查看传输的流量。

标签: python c string udp null-terminated


【解决方案1】:

我终于更改了我的服务器以创建一个新的 char 字符串来发送每个名称、大小、ip、端口并通过 UDP 发送该字符串并解决了问题
谢谢大家!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2014-08-17
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多