Ошибка 98 функции bind() - "Address already in use"
При запуске локального сервера в Linux появляется ошибка функции bind - "Address already in use". Для её исправления использовал 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;
}
Источник: Stack Overflow на русском