0

我编写了一个简单的客户端-服务器程序。我可以在客户端程序中打印客户端的端口号。这些值是动态的。

但是当我尝试在服务器程序中打印它时,它给了我服务器的端口号而不是客户端。

connfd = accept(listenfd, (struct sockaddr*) &cliaddr, &clilen);

cout<<"Server: Server's Port: "<< ntohs(servaddr.sin_port)<<endl; /*23112*/
cout<<"Server: Client's Port: "<< ntohs(cliaddr.sin_port)<<endl; /*23112*/

我在客户端程序中使用相同的,它正在正确打印随机端口。我以这种方式初始化它们:

struct sockaddr_in cliaddr, servaddr;
socklen_t clilen = sizeof(cliaddr);
4

1 回答 1

1

您需要初始化“clilen”:

addrlen 参数是一个值结果参数:调用者必须将其初始化为包含 addr 指向的结构的大小(以字节为单位);返回时它将包含对等地址的实际大小。

于 2012-11-12T01:36:35.603 回答