python - 通过UDP发送列表

标签 python sockets udp python-2.x

我正在使用套接字编程来发送 UDP 文本消息,并且工作正常。这是代码:

发送:

import socket
UDP_IP = "10.0.0.2"
UDP_PORT = 5005
MESSAGE = "Hello"
print "UDP target IP:", UDP_IP
print "UDP target port:", UDP_PORT
print "message:", MESSAGE
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))

接收:

import socket

UDP_IP = "10.0.0.2"
UDP_PORT = 5005
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))
while True:
  data, addr = sock.recvfrom(1024)
  print "received message:", data

现在我想更改发送到列表的消息。我尝试使用pickle来做到这一点。这是代码:

发送:

import socket
import pickle

UDP_IP = "10.0.0.2"
UDP_PORT = 5005
a = []
a.append('H')
a.append('G')
MESSAGE = pickle.dumps(a)
print "UDP target IP:", UDP_IP
print "UDP target port:", UDP_PORT
print "message:", MESSAGE
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))

接收:

import socket
import pickle

UDP_IP = "10.0.0.2"
UDP_PORT = 5005

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))
while True:
  data, addr = sock.recvfrom(1024)
  print "received message:", data
  pickle.loads(data)
  print(data)

但是我没有在接收端获得正确的列表形式。这是输出:

(1p0
S'H'
p1
aS'G'
p2
a.

(1p0
S'H'
p1
aS'G'
p2
a.

出了什么问题?

最佳答案

问题已经解决了。代码工作正常,有一个问题,因为我打印的是数据本身而不是pickle.loads(data)的输出,所以这段代码现在工作正常:

接收:

import socket
import pickle

UDP_IP = "10.0.0.2"
UDP_PORT = 5005

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))
while True:
  data, addr = sock.recvfrom(1024)
  print "received message:", data
  print(pickle.loads(data))

关于python - 通过UDP发送列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53683394/

相关文章:

c - Linux操作系统的udp中的sendto api?

python - python 中是否有内置的自定义数字格式?

c - 如何在 Mac 网络内核扩展(套接字过滤器)中识别 C 中的进程?

c++ - 关于发送/接收的问题

c - 通过同一台机器上的 UDP 套接字发送数据是否可靠?

PHP UDP socket_recv() 超时

python - 在matplotlib中使用数据坐标时如何使y轴文本出现在图中?

python - 在可迭代的东西中计算匹配元素的大多数pythonic方法

python - 我如何解决此错误 'webelement does not support indexing"[webdriver][python]

networking - UDP数据包可以被分割成几个较小的数据包吗