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
的初始化,只显示其声明。@Celadaclilent=sizeof(clilen)代码>我已经这样初始化:clilen=sizeof(cliaddr)代码>
struct sockaddr_in cliaddr, servaddr;
socklen_t clilen = sizeof(cliaddr);