服务端
# coding:utf-8
# server.py
import socket
sock_server = socket.socket()
sock_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock_server.bind(("127.0.0.1",1234))
sock_server.listen(3)
print("server start ...")
while True:
tmp = sock_server.accept()
print(tmp,"\n\n")
客户端
# coding:utf-8
import socket
def make_socks(sock_num):
socks = []
for i in range(sock_num):
tmp_sock = socket.socket()
tmp_sock.connect(("127.0.0.1",1234))
socks.append(tmp_sock)
return socks
if __name__ == "__main__":
make_socks(5)
如上例代码中,有listen(3),这个3是指什么,是指,这个socket只能与3个socket建立链接吗,为什么我用上面的代码可以创建大于3个的tcp连接却没报错,理论上大于3个连接应该报错的
La taille de la file d'attente de connexion TCP, c'est-à-dire le nombre de connexions
Détails de la poignée de main TCP et de la communication socket
Python n'a pas été étudié, mais en c, il fait référence à la longueur de la file d'attente du client qui peut établir une connexion côté serveur, indiquant que le serveur a connu deux poignées de main en attente de l'appel système d'acceptation, dans le livre Programmation de serveur Linux haute performance A mentionné que le retard actuel n'est qu'une valeur recommandée pour le noyau. En fait, il peut être légèrement plus important. Si je me souviens bien, voici comment c'est décrit
La valeur transmise spécifie le nombre maximum de connexions que le système d'exploitation peut suspendre avant de rejeter la connexion. Cette valeur doit être d'au moins 1 et 5 conviendra à la plupart des applications.