Python中的 list 或者 dict 都可以轉成JSON字符串來發送,接收後再轉回來。
首先
import?json然後,把 list 或 dict 轉成 JSON
json_string?=?json.dumps(list_or_dict)如果妳用的是Python3,這裏的 json_string 會是 str 類型(即Python2的unicode類型),可能需要編碼壹下:
if type(json_string) == six.text_type:
json_string = json_string.encode('UTF-8')
用socket發送過去,例如
s.sendto(json_string,?address)對方用socket接收,例如
json_string,?addr?=?s.recvfrom(2048)把JSON轉成 list 或 dict?
list_or_dict?=?json.loads(json_string)下面是個完整的例子:
client.py
#!/usr/bin/env?python#?-*-?coding:?UTF-8?-*-
import?socket
import?json
import?six
address?=?('127.0.0.1',?31500)
s?=?socket.socket(socket.AF_INET,?socket.SOCK_DGRAM)
mylist?=?[1,?2,?3,?4,?5,?6,?7,?8,?9,?10]
json_string?=?json.dumps(mylist)
if?type(json_string)?==?six.text_type:
json_string?=?json_string.encode('UTF-8')
s.sendto(json_string,?address)
s.close()
server.py
#!/usr/bin/env?python#?-*-?coding:?UTF-8?-*-
import?socket
import?json
address?=?('127.0.0.1',?31500)
s?=?socket.socket(socket.AF_INET,?socket.SOCK_DGRAM)
s.bind(address)
json_string,?addr?=?s.recvfrom(2048)
mylist?=?json.loads(json_string)
print(mylist)
s.close()
請先運行server.py,再運行client.py