我在python中创建了一个简单的服务器和一个带socket
模块的简单客户端。
服务器:
# 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)
元组中的第二部分是什么?
答案 0 :(得分:16)
一对(主机,端口)用于AF_INET地址系列,其中host是一个字符串,表示Internet域符号中的主机名,如'daring.cwi.nl'或IPv4地址,如'100.50.200.5',和port是一个整数。
因此第二个值是客户端用于连接的端口号。建立TCP / IP连接时,客户端选择一个外发端口号与服务器通信;服务器返回数据包将被寻址到该端口号。
答案 1 :(得分:11)
socket.accept()
接受连接。套接字必须绑定到一个地址并侦听连接。返回值是一对
(conn, address)
,其中conn是可用于在连接上发送和接收数据的新套接字对象,address是绑定到连接另一端的套接字的地址。
您可以在同一个文档from words "Socket addresses are represented as follows"中找到address
。