有我的功能。我将参数端口传递为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;
}
答案 0 :(得分:4)
通常,小于1024的端口号由众所周知的网络服务器使用,在linux中,需要root权限才能打开这些端口。
80是HTTP端口,因此您的程序需要root权限。