[英]what's the host port number when we use accept() and connect() in C socket programming
《 Beej網絡編程指南》解釋了accept()如下:
即將發生的事情是:遙遠的某人將嘗試在您正在偵聽()的端口上將connect()連接到您的計算機。 他們的連接將排隊等待被接受。 您調用accept(),並告訴它獲取掛起的連接。 它會返回給您一個全新的套接字文件描述符 ,用於此單個連接!
但是我們如何知道“全新插座”的端口號?
從GNU文檔接受。
newfd = accept (sockfd, (struct sockaddr *) &clientname, &size);
if (newfd < 0) {
perror ("accept");
exit (EXIT_FAILURE);
}
在接受sockaddr.in結構中,找到本地端口。
fprintf (stderr, "Server: connect from host %s, port %hd.\n",
inet_ntoa (clientname.sin_addr),
ntohs (clientname.sin_port));
它不會分配新的端口。 接受的套接字使用與偵聽套接字相同的端口。
將接受的SOCKET
傳遞到getsockname()
以獲取其本地IP /端口,並傳遞到getpeername()
以獲取其遠程IP /端口。
我認為getpeername將返回此信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.