当前位置:  开发笔记 > 编程语言 > 正文

通过套接字发送和接收数组

如何解决《通过套接字发送和接收数组》经验,为你挑选了2个好方法。

是否可以使用Python通过UDP套接字发送数组?我正在使用Python 2.5并尝试发送一个简单的数组,但它不起作用.它可以成功发送数组,但是当我尝试使用数组项打印它时,程序崩溃了.我不确定错误是什么,因为我采取了将数据转换为数组的预防措施,但它不起作用.希望我尽可能清楚地解释问题.我很感激你的帮助!

# Client program

from socket import *
import numpy
from array import*

# Set the socket parameters
host = "localhost"
port = 21567
buf = 4096
addr = (host,port)

# Create socket
UDPSock = socket(AF_INET,SOCK_DGRAM)

def_msg = "===Enter message to send to server===";
print "\n",def_msg
a = array('i',[1,3,2])
# Send messages
while (1):
    data = raw_input('yes or now')
    if data!= "yes":
        break
    else:
        if(UDPSock.sendto(a,addr)):
            print "Sending message"

# Close socket
UDPSock.close()



# Server program

from socket import *

# Set the socket parameters
host = "localhost"
port = 21567
buf = 4096
addr = (host,port)

# Create socket and bind to address
UDPSock = socket(AF_INET,SOCK_DGRAM)
UDPSock.bind(addr)

# Receive messages
while 1:
    data,addr = UDPSock.recvfrom(buf)
    L = eval(data)
    if not data:
        print "Client has exited!"
        break
    else:
        print "\nReceived message '", L[1],"'"

# Close socket
UDPSock.close()

hamstergene.. 14

eval 正在做一些与你的想法完全不同的事情.

要通过网络发送数据,您需要将其序列化为一个字节数组,然后反序列化.在Python中,大多数对象的序列化可以通过pickle模块完成:

if (UDPSock.sendto( pickle.dumps(a), addr)):

反序列化:

data,addr = UDPSock.recvfrom(buf)
L = pickle.loads(data)
print repr(L) # prints array('i', [1, 3, 2])


Paul.. 6

我个人会使用tostring,fromstring因为内置的序列化方法快了很多倍,而pickle 可能不支持 NaN,Inf和其他未定义的值.



1> hamstergene..:

eval 正在做一些与你的想法完全不同的事情.

要通过网络发送数据,您需要将其序列化为一个字节数组,然后反序列化.在Python中,大多数对象的序列化可以通过pickle模块完成:

if (UDPSock.sendto( pickle.dumps(a), addr)):

反序列化:

data,addr = UDPSock.recvfrom(buf)
L = pickle.loads(data)
print repr(L) # prints array('i', [1, 3, 2])



2> Paul..:

我个人会使用tostring,fromstring因为内置的序列化方法快了很多倍,而pickle 可能不支持 NaN,Inf和其他未定义的值.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有