• 请不要在回答技术问题时复制粘贴 AI 生成的内容
HxSeek
V2EX  ›  程序员

简单的网络编程问题

  •  
  •   HxSeek · Jul 28, 2017 · 3555 views
    This topic created in 3385 days ago, the information mentioned may be changed or developed.

    这是小弟的一个简单的 web 服务器程序,每次我直接用 Ctrl+z 来关闭这个服务器程序时候,之后再重新开启的时候,发现浏览器已经再也打不开这个端口了,我查了一下,服务状态器处于 CLOSE_WAIT 状态, 请问代码应该怎样修改才能避免这种状况,谢谢大家

    #include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> #include <string.h> #include <unistd.h> #include <stdlib.h> int main() { int listenfd; int clientfd; int optval = 1; struct sockaddr_in server_addr; struct sockaddr_in client_addr;

    if((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
        return -1;
    
    setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, (const void *)&optval, sizeof(int));
    
    memset(&server_addr, 0, sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    server_addr.sin_port = htons(8000);
    
    if(bind(listenfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < -1)
        return -1;
    
    if(listen(listenfd, 1) < 0)
        return -1;
    
    int client_size = sizeof(client_addr);
    
    while(1)
    {
        clientfd = accept(listenfd, (struct sockaddr *)&client_addr, &client_size);
    
        if(clientfd < 0)
            exit(1);
    
        write(clientfd, "web server\n", 10);
    
        close(clientfd);
    }
    
    exit(0);
    

    }

    8 replies  •  2017-07-29 00:50:37 +08:00
    momocraft
    momocraft
    Jul 28, 2017
    1
    如果你是指 shell 中的 ctrl-z: 你其实没有关闭这个进程,只是挂起 (SIGSTOP) 了。
    aisk
    aisk
    Jul 28, 2017
    2
    ctrl z 只是把进程挂到后台,进程其实还在,使用 fg 命令还能恢复。
    fyyz
    fyyz
    Jul 28, 2017❤️1
    3
    Ctrl + C
    HxSeek
    HxSeek
    OP
    Jul 28, 2017
    4
    @aisk 了解,谢谢
    am241
    am241
    Jul 28, 2017 via Android
    5
    相关命令 jobs, fg
    qucklay
    qucklay
    Jul 28, 2017 via iPhone
    6
    ctrl z 进程后台停止,然后 jobs 查看几号,bg %1 放后台执行。
    fg %1 切换到前台执行,ctrl c 关闭进程
    pqee
    pqee
    Jul 28, 2017
    7
    第一次知道 ctrl-z。。。
    yumemor
    yumemor
    Jul 29, 2017 via iPhone
    8
    lsof -i port 看看是谁占用了?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3078 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 04:59 · PVG 12:59 · LAX 20:59 · JFK 23:59
    ♥ Do have faith in what you're doing.