Sockets 如何获得客户';服务器的端口号是多少?

Sockets 如何获得客户';服务器的端口号是多少?,sockets,client-server,port,Sockets,Client Server,Port,我已经编写了一个简单的客户机-服务器程序。我能够在客户端程序中打印客户端的端口号。这些值是动态的 但是,当我试图在服务器程序中打印它时,它会给我服务器的端口号,而不是客户机的端口号 connfd = accept(listenfd, (struct sockaddr*) &cliaddr, &clilen); cout<<"Server: Server's Port: "<< ntohs(servaddr.sin_port)<<endl; /

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

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

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*/

您需要初始化“clilen”:

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


在调用
accept
之前,请显示如何初始化
clilen
。并显示如何声明
servaddr
cliaddr
clilen
。您没有显示
clilen
的初始化,只显示其声明。@Celada
clilent=sizeof(clilen)我已经这样初始化:
clilen=sizeof(cliaddr)
struct sockaddr_in cliaddr, servaddr;
socklen_t clilen = sizeof(cliaddr);