如何从服务器获取客户端的端口号?

时间:2012-11-11 22:18:13

标签: sockets client-server port

我写了一个简单的客户端 - 服务器程序。我能够在客户端程序中打印客户端的端口号。价值观是动态的。

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

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);

1 个答案:

答案 0 :(得分:1)

您需要初始化'clilen':

  

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