无法在linux中绑定套接字

时间:2017-11-14 12:47:38

标签: c linux sockets

有我的功能。我将参数端口传递为80,我总是无法绑定套接字。

int create_socket(int port)
{
    int sock;
    struct sockaddr_in name;

    sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock < 0) {
        fprintf(stderr, "Can not create socket\n");
        return -1;
    }
    //Assigning a name to the socket
    name.sin_family = AF_INET;
    name.sin_port = htons((unsigned short)port);
    name.sin_addr.s_addr = htonl(INADDR_ANY);
    if (bind(sock, (const struct sockaddr *) &name, sizeof(name)) == -1) {
        fprintf(stderr, "Can not bind socket\n");
        return -1;
    }
    return sock;
}

1 个答案:

答案 0 :(得分:4)

通常,小于1024的端口号由众所周知的网络服务器使用,在linux中,需要root权限才能打开这些端口。

80是HTTP端口,因此您的程序需要root权限。