下面的代码是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).
任何人都可以“免费使用”1024 以上(包括 1024)的内容。
OT:您可能已经知道这一点,但您示例中的端口是 HTTP Web 服务器的端口。任何监听此端口的东西should也讲 HTTP。简单的“hello world”是不够的。 ;-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)