小编Beh*_*oth的帖子

bind() 错误 98 - “地址已在使用中”

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

c++ linux server

2
推荐指数
1
解决办法
132
查看次数

标签 统计

c++ ×1

linux ×1

server ×1