Je me demande si le client TCP peut utiliser le même port pour se connecter à différents serveurs TCP distants ou non?
En programmation réseau, il y a deux fonctions: sendto
et send
. Quand nous utilisons send
nous n'avons pas besoin de spécifier la destination. Cela semble signifier qu'une prise TCP connectée ne peut être associée qu'à une seule (src ip, port src, dst ip, port dst) 4-tuple.
puis-je faire quelque chose comme:
sockfd=socket(AF_INET,SOCK_STREAM,0);
bzero(&cliaddr,sizeof(cliaddr));
cliaddr.sin_family = AF_INET;
cliaddr.sin_addr.s_addr=inet_addr(local_ip);
cliaddr.sin_port=htons(32000);
bind(listenfd,(struct sockaddr *)&cliaddr,sizeof(cliaddr));
connect(sockfd, (struct sockaddr *)&servaddr1, sizeof(servaddr1));
connect(sockfd, (struct sockaddr *)&servaddr2, sizeof(servaddr2));
sendto(sockfd, buf, len, 0, (struct sockaddr *)&servaddr1, socklen);
sendto(sockfd, buf, len, 0, (struct sockaddr *)&servaddr2, socklen);
Par exemple, est-il possible que le proxy http manque de ports et doive les réutiliser?