QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 742|回复: 5

一个错误的服务器端程序

[复制链接]
发表于 2004-12-20 13:53:37 | 显示全部楼层 |阅读模式
写了一个简单的C/S的网络通信程序,但服务器端建好后,用netstat -na查 没有发现进程在指定的端口监听,源代码如下:
#include "header.h"    //一些必要的头文件都放到这里了

int main(int argc, char *argv[])
{
    int listenfd, connectfd;
    struct sockaddr_in serveraddr, clientaddr;
    socklen_t client;
    ssize_t n;
    char message[1500];

    if((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
        printf("socket error");

    memset(&serveraddr, 0, sizeof(serveraddr));
    serveraddr.sin_family = AF_INET;
    serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
    serveraddr.sin_port = htons(88;
    if(bind(listenfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0)
        printf("bind error");

    if(listen(listenfd, 10) < 0)
        printf("listen error");

    for(; ;)
    {
        client = sizeof(clientaddr);
        if((connectfd = accept(listenfd, (struct sockaddr *)&clientaddr, &client)) < 0)
            printf("accept error");

        while((n = read(connectfd, message, 1500)) > 0)
        {
            write(connectfd, message, n);
        }
    }
}
我加了很多printf函数,用于判断是否正确的建立监听进程,程序运行后没有出现错误提示,但怎么没有进程在888监听呢?
发表于 2004-12-20 14:18:20 | 显示全部楼层
do you run the process as root? use gdb to trace it!
回复

使用道具 举报

 楼主| 发表于 2004-12-31 15:10:26 | 显示全部楼层
用root可以正常执行了 ,但为什么要以root权限执行呢?
回复

使用道具 举报

发表于 2004-12-31 22:09:43 | 显示全部楼层
linux下某个端口号以前的端口只有root能监听,是多少忘了,好像是1024,有心得人给查查。

所以,你的程序例如不监听888,监听6666看看,就不需要root权限了。
回复

使用道具 举报

发表于 2005-1-5 09:12:06 | 显示全部楼层
多谢kakuyou,又学了一招
回复

使用道具 举报

 楼主| 发表于 2005-1-5 11:12:54 | 显示全部楼层
经实验果然如此阿,kakuyou兄真利害阿
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 19:34 , Processed in 0.101879 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表