Мне интересно, может ли TCP-клиент использовать один и тот же порт для подключения к различным удаленным TCP-серверам или нет?
В сетевом программировании есть две функции: sendto
и send
. Когда мы используем send
нам не нужно указывать пункт назначения. Похоже, это означает, что подключенный сокет tcp может быть связан только с одним (src ip, src port, dst ip, dst port) 4-кортежем.
Могу ли я сделать что-то вроде:
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);
например, возможно ли, что у http-прокси может не хватить портов и придется ли повторно использовать порты?