我正在创建一个服务器 - 客户端应用程序,这个问题是在下面的代码中,我将无法绑定或无法打开套接字消息(请参阅下面的示例代码)。
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0){
qDebug() << "ERROR netserver: opening socket";
//more code here
}
或
if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0){
qDebug() << "ERROR netserver: binding to socket";
//more code here
}
我知道使用getLastError()
的C ++开发人员,但我找不到任何类型的套接字。
有没有人知道某个页面/教程/维基?
答案 0 :(得分:0)
无法绑定/打开套接字通常具有(非开发人员)系统错误原因。这些并不总是得到很好的报道:(
可能发生这种情况的原因可能是套接字已被监听(即,您正在尝试运行同一程序的第二个实例),或者之前的套接字天堂已被正确关闭退出上一个程序/实例后的操作系统。有不同的方法来解决最后一个问题,而是检查它不是第一个问题;)
您可能会遇到这类错误的另一个原因是被请求的端口是特权端口,即。任何小于1024的东西,需要root(在Unix上)类型特权。
在Unix上,那里的朋友是&#34; netstat -an&#34; (我记得窗口有类似的命令)