Python 从udp接收符号,为什么?

Python 从udp接收符号,为什么?,python,network-programming,udp,Python,Network Programming,Udp,我编写了一个listen python udp代码来接收一个流,该流的输出应该是1到42的数字,但是,输出似乎是42个符号,而不是值(因此): 1450472711.51:@4@@@p$@@@@$@&@(@*@,@0@1@2@3@4@5@6@7@8@9@@@�@@ A@�A@B@�B@C@�C@D@�D@ 代码是这样的:我嗅到了数据包,它们似乎都有378个数据包长,而且这种情况还在继续发生,所以我没有看到任何数据包丢失 import socket,sys, ast , os from

我编写了一个listen python udp代码来接收一个流,该流的输出应该是1到42的数字,但是,输出似乎是42个符号,而不是值(因此):

1450472711.51:@4@@@p$@@@@$@&@(@*@,@0@1@2@3@4@5@6@7@8@9@@@�@@ A@�A@B@�B@C@�C@D@�D@

代码是这样的:我嗅到了数据包,它们似乎都有378个数据包长,而且这种情况还在继续发生,所以我没有看到任何数据包丢失

import socket,sys, ast , os
from time import ctime
import time
print >> sys.stderr, os.getcwd()
print >> sys.stderr ,  ctime()



sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
ip = '192.168.10.101'
port = 25000
server_address = (ip, port)

sock.bind(server_address)   # bind socket

sock.settimeout(2)          # sock configuration
sock.setblocking(1)
print >> sys.stderr, 'able to bind'
i = 0
client = ''

byte = 378
while True:
    if i == 0:
        print >> sys.stderr, 'connected'
    data,client = sock.recvfrom(byte)
    print >> sys.stderr,time.time() ,":",data , "\n"
    i= i+1
有人能解释为什么会这样吗?当收到数据包时,是否有一些转换我没有做


谢谢!

您正在打印一个二进制数据字符串。要查看传输的实际二进制(字节)数,请尝试以下操作:

for c in data:
    print ord(c)

数据是如何编码的?我们必须看看服务器做了什么。我希望我知道如何回答这个问题。发送的消息来自Xilinx的微型FPGA,由simulink编码,它有自己的UDP发送块,但没有提到编码。如果我知道了,我会发布它。除非有人碰巧知道它是如何编码的。谢谢!您好,我现在收到336个值,这是我查看wireshark时数据包大小的值。如何将这些值转换为原始输入值,即数字1到43,通过simulink中的udp块进行多路传输和发送。以下是一些336个值(我可以粘贴到此处):0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0“s,即8个字节的数字。正如您最初所说,您发送了42个,42*8=336,这是有意义的。但是,8个字节的值不是1到42,而是:64、0、64、2112、4160、5184、6208、7232、8256、8768、9280、9792、10304、10816…”。。。