套接字编程权限被拒绝

 mobiledu2502883843 发布于 2023-02-12 17:52

以下代码是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.一个简单的"你好世界"是不够的.;-)

2 个回答
  • 只允许root用户绑定到端口<= 1024.普通用户可以绑定每个端口> 1024.

    尝试以root用户身份执行程序sudo.

    2023-02-12 17:55 回答
  • 低于1024的端口被视为"特权",并且只能与具有同等特权的用户绑定(读取:root).

    任何人都可以"免费使用"1024以上的任何内容.

    OT:您可能已经知道这一点,但您的示例中的端口是HTTP Web服务器的端口.任何听这个端口的东西都应该说HTTP.一个简单的"你好世界"是不够的.;-)

    2023-02-12 17:55 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有