簡體   English   中英

在python中通過TCP服務器網絡發送對象

[英]Sending an object over a TCP server network in python

我目前正在研究一個試驗python不同區域的小項目。 我決定在python中創建一個多客戶端TCP服務器,並希望能夠通過服務器發送“數據包”,然后由其他客戶端接收然后進行解析。 但是,如果我嘗試發送數據包,說我必須發送字節或字符串,有沒有辦法將對象轉換為字節,然后返回或通過服務器本身發送數據包對象,我會收到錯誤。

##編輯##

我研究過UDP服務器,我不相信這就是我要找的東西,我可能提供的信息太少了。 我正在創建一個小型試玩游戲,對於我和一些朋友來說,我需要與服務器保持連接,因為信息將不斷通過網絡發送,如位置,方向,語音,庫存等我想要一種方法將整個Entity類轉換為一個字節數組,然后發送它,並在收到它時將其轉回Entity類的實例。

您可以使用pickle將對象序列化/反序列化為字符串並返回。 https://docs.python.org/2/library/pickle.html

最簡單的方法是發送(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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM