Maison > Questions et réponses > le corps du texte
服务端
# 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个连接应该报错的
大家讲道理2017-04-18 09:42:49
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
伊谢尔伦2017-04-18 09:42:49
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
怪我咯2017-04-18 09:42:49
sock_server.listen(5) # 开始监听TCP传入连接
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.