gpt4 book ai didi

c - 套接字编程权限被拒绝

转载 作者:太空狗 更新时间:2023-10-29 16:39:30 25 4
gpt4 key购买 nike

下面的代码是 TCP 服务器程序只是发送回“HELLO!!”给客户。

当我使用端口 80 运行服务器时,返回 bind() Permission denied

端口 12345 可以。

如何为这个服务器程序使用端口 80?

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

int
main(){
int sock0;
struct sockaddr_in addr;
struct sockaddr_in client;
int len;
int sock;
char *message;
message = "HELLO !!";
sock0 = socket(AF_INET,SOCK_STREAM,0);
addr.sin_family = AF_INET;
addr.sin_port = htons(80);
inet_pton(AF_INET,"127.0.0.1",&addr,sizeof(addr));
bind(sock0,(struct sockaddr *)&addr,sizeof(addr));
perror("bind");
len = sizeof(client);
sock = accept(sock0,(struct sockaddr *)&client,&len);
perror("accept");
write(sock,message,sizeof(message));
perror("write");
close(sock);
return 0;
}

最佳答案

低于 1024 的端口被认为是“特权”端口,只能与具有同等特权的用户(阅读:root)绑定(bind)。

任何人都可以“免费使用”任何超过 1024 的内容,包括 1024。

OT:您可能已经知道这一点,但示例中的端口是用于 HTTP Web 服务器的端口。监听此端口的任何内容也应该使用 HTTP。一个简单的“hello world”是不够的。 ;-)

关于c - 套接字编程权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20396820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com