如果我在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;
}