如果我在 Linux 上启动本地服务器,我会收到“地址已在使用中”错误。
我用setsockopt(SO_REUSEADDR)但没有帮助。我怎么解决这个问题?代码:
#include <iostream>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
using namespace std;
int main() {
sockaddr_un s_addr;
s_addr.sun_family = AF_UNIX;
strcpy(s_addr.sun_path, "server");
int s_descriptor = socket(AF_UNIX, SOCK_STREAM, 0);
const int par = 1;
if (setsockopt(s_descriptor, SOL_SOCKET, SO_REUSEADDR, &par, sizeof(int)) < 0){
cout << "Error setsockopt()";
return -1;
}
if (bind(s_descriptor, (sockaddr *)&s_addr, sizeof(s_addr)) < 0) {
cout << "Error with bind()\n";
cout << strerror(errno);
return -2;
}
close(s_descriptor);
return 0;
}
Run Code Online (Sandbox Code Playgroud)