Я пытаюсь понять работу сети на python с помощью модуля socket
, но мне кажется, что проблема в том, что я не совсем понимаю, как на самом деле работает сервер или клиент.
Что я пытаюсь сделать:
- Отправьте словарь с клиента на сервер, сначала превратив его в строку, используя JSON
- Заставить сервер отправить клиенту сообщение, подтверждающее, что он подключен
Серверная программа
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)
Клиентская программа
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)
Но я получаю ошибку:
OSError: [Errno 57] Разъем не подключен
Почему?