首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过UDP发送列表

通过UDP发送列表
EN

Stack Overflow用户
提问于 2018-12-08 14:15:27
回答 2查看 2.2K关注 0票数 2

我使用套接字编程来发送UDP文本消息,它运行良好。以下是代码:

发送:

代码语言:javascript
复制
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))

recv:

代码语言:javascript
复制
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来完成这个任务。以下是代码:

发送:

代码语言:javascript
复制
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))

recv:

代码语言:javascript
复制
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)

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

代码语言:javascript
复制
(1p0
S'H'
p1
aS'G'
p2
a.

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

怎么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-08 14:54:40

问题解决了。代码运行良好,出现了一个问题,因为我打印的是数据本身,而不是pickle.loads(data)的输出,所以这段代码现在运行良好:

recv:

代码语言:javascript
复制
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))
票数 2
EN

Stack Overflow用户

发布于 2018-12-08 14:41:13

套接字对字节(二进制数据)进行操作。

将数据发送到套接字连接(str.encode())时对字符串进行编码

bytes.decode('utf8')对从套接字接收的字节序列进行解码。

https://docs.python.org/3/howto/sockets.html#socket-howto

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53683394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档