Ita*_*Gal 1 c++ sockets linux port tcp
我有一个客户端和一个服务器应用程序。当客户端要发送文件时,我正在使用TCP连接。当我为连接使用恒定端口号时,它可以工作(服务器接收文件)。
我想使用随机端口,因此尝试将端口设置为0。
我的代码是:
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = 0;
if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0){
cout << "failed to bind with errno: "<< errno << endl;
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
绑定有效,但使用端口0而不是预期的随机端口。
我究竟做错了什么?
好了,问题解决了。我添加了一个呼叫getsocketname
if (getsockname(sockfd, (struct sockaddr *)&serv_addr, &len_inet) < 0){
cout << "failed to get hostname with errno: "<< errno << endl;
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4333 次 |
最近记录: |