В эти дни я немного занимался сетевым программированием на Python и хотел бы подтвердить поток, который, по-моему, происходит между клиентом и сервером:
- Серверы слушают данные
рекламируемый порт (9999)
- Клиент подключается к серверу, создавая новый сокет (например, 1111)
- Серверы принимают запрос клиента и автоматически порождают новый сокет (????), который теперь будет обрабатывать связь между клиентом и сервером
Как видите, в приведенном выше потоке задействованы 3 сокета:
- Серверный сокет, который слушает клиентов
- Сокет, порожденный клиентом
- Сокет, порожденный сервером для обработки клиента
Мне известно о получении портов для первых двух сокетов (9999 и 1111), но я не знаю, как получить «реальный» порт, который связывается с клиентом на стороне сервера. Фрагмент, который я использую сейчас это:
def sock_request(t):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('localhost', 9999))
print('local sock name: ' + str(s.getsockname()))
print('peer sock name: ' + str(s.getpeername()))
s.send('a' * 1024 * int(t))
s.close()
Любая помощь в получении номера "порта" на сервере, который фактически общается с клиентом, будет высоко ценится. ТИА.