New*_*101 2 python sockets json
我试图使用该socket模块了解 python 上的网络,但我认为问题是我并不真正了解服务器或客户端的实际功能。
我正在尝试做的事情:
服务器程序
import socket
import json
HOST = '192.168.X.X'
PORT = 50034
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
with conn:
while True:
data = conn.recv(1024)
new_data = data.decode()
new_data = json.loads(data)
print(new_data["Name"],"has connected from",addr)
message = ("Hello %s welcome to the chat server" % new_data["Name"]).encode()
s.sendall(message)
if not data:
conn.sendall(data)
Run Code Online (Sandbox Code Playgroud)
客户端程序
import socket
import json
HOST = '192.168.X.X'
PORT = 50034
my_dict = {"Name":"Bob"}
jsn = json.dumps(my_dict)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST,PORT))
s.sendall((jsn).encode())
data = s.recv(1024)
print(data)
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
OSError: [Errno 57] 套接字未连接
为什么?
在您的服务器代码中,您需要更改...
s.sendall(message)
Run Code Online (Sandbox Code Playgroud)
... 到 ...
conn.sendall(message)
Run Code Online (Sandbox Code Playgroud)
这是因为当你做...
conn, addr = s.accept()
Run Code Online (Sandbox Code Playgroud)
...conn是该连接的新套接字实例。这就是您应该用于在该连接上发送和接收数据的对象。在调用接受连接之前,您没有实际连接到任何东西的套接字。accept()
| 归档时间: |
|
| 查看次数: |
11978 次 |
| 最近记录: |