Основная машина работает python3 .8.0
Вторая машина python 3.7.5
Я создал серверный сокет на своей основной машине:
import socket
HOST = ''
PORT = 65432
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print('Connected by', addr)
while True:
data = conn.recv(1024)
if not data:
break
conn.sendall(data)
и я также создал клиентский сокет на втором компьютере:
import socket
HOST = '' # The server's hostname or IP address
PORT = 65432 # The port used by the server
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
data = s.recv(1024)
print('Received', repr(data))
Насколько я понимаю, если я запускаю сокет server
, а затем подключаюсь, используя сокет client
, мой сокет сервера должен вывести: "connected by [client ip], [specified port]"
В то же время клиент должен напечатать: "Received b'Hello, world'
.
Что произойдет, если мой сервер печатает "connected by [server ip], [random port]"
и клиент печатает "Received b'Hello, world'"
.
Мои вопросы:
Почему сервер печатает ip сервера, а не ip клиента? И почему порт случайный, если я указал порт?
Если мой серверный сокет работает, как я могу отправлять данные из подключающегося клиентского сокета в серверный сокет?
Например: x = 'random string'
. При подключении клиентского сокета, как я могу отправить 'x'
, чтобы получить его на стороне сервера?