Я использую модуль socket
из Python 3.7 (это не должно иметь значения, так как я пытался активировать другую версию Python из другой версии venv).
Проблема в том, что я создал TCP-соединение, прослушивающее порт 65432, произвольное число, которое я выбрал для этой простой демонстрации.
server.py
выглядит следующим образом:
import socket
HOST = '127.0.0.1' # Standard loopback interface address (localhost)
PORT = 65432 # Non-privileged ports are > 1024
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)
client.py
относительно прост, поскольку он устанавливает соединение с 127.0.0.1:65432.
import socket
HOST = '127.0.0.1' # The server's hostname or IP address
PORT = 65432 # Port used by the server
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
# Send its message and then read the server's reply and prints it
s.sendall(b'Hello, world')
data = s.recv(1024)
print('Received', repr(data))
Выполнение server.py
, чтобы открыть порт 65432 для прослушивания (в первой консоли), а затем выполнение client.py
для отправки простого сообщения 'hello world' (во второй консоли).Вот что было напечатано на первой консоли:
Connected by ('127.0.0.1', 56051)
Пока все хорошо.Порт 56051 подключается к порту 65432, верно?
Я выполняю netstat -am
(утилита командной утилиты для просмотра состояния сокетов на хост-компьютере) и обнаружил это:
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 127.0.0.1.51495 *.* LISTEN
Вместо 127.0.0.1.65432в качестве локального адреса вместо него используется порт 51495.
Выполняется еще одна проверка, на этот раз запускается lsof -i -n
:
COMMAND PID FD TYPE DEVICE SIZE/OFF NODE NAME
Code\x20H 51214 37u IPv4 0x1af15eb424ba89f3 0t0 TCP 127.0.0.1:51495 (LISTEN)
Обе проверки подтвердили, что порт 51495 работаетиспользуется вместо 65432, как указано в моих сценариях server.py
и client.py
.Есть ли советы или советы?Большое спасибо заранее!