以下代码是TCP服务器程序只是发回"HELLO !!"给客户端.
当我使用端口80运行服务器时,返回bind()Permission denied
.
端口12345没问题.
如何在此服务器程序中使用端口80?
#include#include #include #include #include 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; }
Linus Kleen.. 23
低于1024的端口被视为"特权",并且只能与具有同等特权的用户绑定(读取:root).
任何人都可以"免费使用"1024以上的任何内容.
OT:您可能已经知道这一点,但您的示例中的端口是HTTP Web服务器的端口.任何听这个端口的东西都应该说HTTP.一个简单的"你好世界"是不够的.;-)
只允许root用户绑定到端口<= 1024.普通用户可以绑定每个端口> 1024.
尝试以root用户身份执行程序sudo
.
低于1024的端口被视为"特权",并且只能与具有同等特权的用户绑定(读取:root).
任何人都可以"免费使用"1024以上的任何内容.
OT:您可能已经知道这一点,但您的示例中的端口是HTTP Web服务器的端口.任何听这个端口的东西都应该说HTTP.一个简单的"你好世界"是不够的.;-)