繁体   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