在python中通过TCP服务器网络发送对象

时间:2015-02-16 13:05:41

标签: python sockets object tcp packet

我目前正在开展一个试验python不同区域的小项目。我决定在python中创建一个多客户端TCP服务器,并希望能够通过服务器发送“数据包”,然后由其他客户端接收然后进行解析。但是,如果我尝试发送数据包,说我必须发送字节或字符串,有没有办法将对象转换为字节,然后返回或通过服务器本身发送数据包对象,我收到错误。

##编辑##

我研究过UDP服务器,我不相信这就是我要找的东西,我可能提供的信息太少了。我正在创建一个小型试玩游戏,对于我和一些朋友来说,我需要与服务器保持连接,因为信息将不断通过网络发送,如位置,方向,语音,库存等我想要一种方法将整个Entity类转换为一个字节数组,然后发送它,并在收到它时将其转回Entity类的实例。

2 个答案:

答案 0 :(得分:2)

您可以使用pickle将对象序列化/反序列化为字符串并返回。 https://docs.python.org/2/library/pickle.html

答案 1 :(得分:1)

最简单的方法是发送(gzipped?)JSON'd或msgpack'd个对象。

例如,使用UDP,这看起来像下面的代码;请注意,您希望重用套接字对象,而不是每次都实例化一个新的套接字对象。

import socket
import msgpack

def send_object(obj=None, ip, port):
    if obj:
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.sendto(msgpack.dumps(obj), (ip, port))