簡體   English   中英

在C套接字編程中使用accept()和connect()時,主機端口號是多少

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM