Что возвращает значение Socket.accept() в python

Я сделал простой сервер и простой клиент с модулем socket в python.

Сервер:

# server.py
import socket

s = socket.socket()
host = socket.gethostname()
port = 1234
s.bind((host, port))

s.listen(5)

while True:
    c, addr = s.accept()
    print 'Got connection from', addr
    c.send('Thank you for your connecting')
    c.close()

и клиент:

#client.py
import socket

s = socket.socket()

host = socket.socket()
port = 1234

s.connect((host, port))
print s.recv(1024)

Я запустил сервер, а затем запустил 4 клиента и получил вывод в консоли сервера, как показано ниже:

Got connection from ('192.168.0.99', 49170)
Got connection from ('192.168.0.99', 49171)
Got connection from ('192.168.0.99', 49172)
Got connection from ('192.168.0.99', 49173)

какая вторая часть в кортеже?

Ответы

Ответ 1

Из socket документации:

Пара (host, port) используется для семейства адресов AF_INET, где host - это строка, представляющая либо имя хоста в нотации домена Интернета, как "daring.cwi.nl", или адрес IPv4, такой как "100.50.200.5", и порт является целым числом.

Таким образом, вторым значением является номер порта, используемый клиентской стороной для соединения. Когда установлено соединение TCP/IP, клиент выбирает номер исходящего порта для связи с сервером; серверные обратные пакеты должны быть адресованы этому номеру порта.

Ответ 2

Цитата из документация python:

socket.accept()

Принять соединение. Сокет должен быть привязан к адресу и прослушивать соединения. Возвращаемое значение представляет собой пару (conn, address), где conn - новый объект сокета, который можно использовать для отправки и получения данных по соединению, а адрес - это адрес, привязанный к сокету на другом конце соединения.

Что address вы можете найти в том же документе из слов "Адреса сокетов представлены следующим образом" .