25

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)

元组的第二部分是什么?

4

2 回答 2

22

socket文档中:

AF_INET 地址族使用一对 (host, port),其中 host 是一个字符串,表示 Internet 域表示法中的主机名,如“daring.cwi.nl”或 IPv4 地址,如“100.50.200.5”,端口为一个整数。

所以第二个值是客户端用于连接的端口号。当建立 TCP/IP 连接时,客户端选择一个传出端口号与服务器通信;服务器返回的数据包将被寻址到该端口号。

于 2012-09-17T07:21:17.800 回答
16

引用python 文档

socket.accept()

接受连接。套接字必须绑定到一个地址并监听连接。返回值是一对(conn, address),其中 conn 是一个新的套接字对象,可用于在连接上发送和接收数据,而 address 是绑定到连接另一端套接字的地址。

address您可以从“套接字地址表示如下”一词在同一文档中找到什么。

于 2012-09-17T07:21:08.080 回答