Что возвращает значение 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
вы можете найти в том же документе из слов "Адреса сокетов представлены следующим образом" .