這裏是我的python tcp客戶端。我想發送一個json對象給服務器,但是我不能使用sendall()方法發送這個對象。我怎樣才能做到這一點?如何在Python中使用tcp socket發送json對象
import socket
import sys
import json
HOST, PORT = "localhost", 9999
m ='{"id": 2, "name": "abc"}'
jsonObj = json.loads(m)
data = jsonObj
# Create a socket (SOCK_STREAM means a TCP socket)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# Connect to server and send data
sock.connect((HOST, PORT))
sock.sendall(jsonObj)
# Receive data from the server and shut down
received = sock.recv(1024)
finally:
sock.close()
print "Sent: {}".format(data)
print "Received: {}".format(received)
當你說「我不能發送的對象」,你看到的任何錯誤?或者程序卡住了?你是否證實TCP服務器正在監聽localhost:9999? –
服務器正在偵聽。並出現以下錯誤.. 回溯(最近通話最後一個): 文件 「C:/Users/Lochana/PycharmProjects/SocketClient/TCPClient.py」 19行,在 sock.sendall(jsonObj) 文件在第0128行中的「C:\ Python27 \ lib \ socket.py」中,第012行,在方法 中返回getattr(self._sock,name)(* args) ** TypeError:sendall()參數1必須是字符串或緩衝區, ** –
在這種情況下,您需要將字典序列化爲字符串。或者傳遞對象'm'來發送,而不是'jsonObj'。 (什麼是序列化 - https://en.m.wikipedia.org/wiki/Serialization) –