• [置顶] Unix 网络编程系列05


    请转载者,尊重作者(xiaobin)的劳动成果!

    在第一个实例我们已经编写了客户端程序,本篇编写他的姊妹篇---服务器端程序。

    基本上,服务器端程序既是客户端程序的“反”程序!

    1. 建立socket通信

    2. 初始化servaddr

        2.1 置0

        2.2 设置协议族

        2.3 设置端口

        2.4 设置ip地址为本机所有地址/任意地址

    3. 绑定socket的端口

    4. 监听socket

    以上2.4, 3, 4是为客户端的connect做准备的。

    循环执行:

    5. 接受连接

    6. 发送数据

    7. 关闭连接


    第二个运行实例!

    daytimetcpsrv.c

    #include "./lib/unp.h"
    #include <time.h>
    
    #define LISTEN_QUEUE 20
    
    int main(int argc, char **argv)
    {
      int     listenfd, connfd;
      struct  sockaddr_in servaddr;
      char    buff[MAXLINE];
      time_t  ticks;
      
      listenfd = socket(AF_INET, SOCK_STREAM, 0);
      
      bzero(&servaddr, sizeof(servaddr));
      servaddr.sin_family = AF_INET;
      servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
      servaddr.sin_port = htons(13);
      
      bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr));
    
      listen(listenfd, LISTEN_QUEUE);
      
      for ( ; ; ) {
        connfd = accept(listenfd, (struct sockaddr *) NULL, NULL);
        
        time(&ticks);
        snprintf(buff, sizeof(buff), "%s\n", ctime(&ticks));
        
        write(connfd, buff, strlen(buff));
        
        close(connfd);
      }
    }

    编译:

    root@xiaobin-desktop:/home/xiaobin/temp# cc daytimetcpsrv.c -o daytime1.out

    运行:

    root@xiaobin-desktop:/home/xiaobin/temp# ./daytime1.out

    -------------------------------------------------------------------------end-------

    测试:

    使用windows的telnet来测试我们程序是否运行正常,

    在命令提示符中输入:telnet 192.168.101.128 13

    (其中192.168.101.128为服务器ip地址;13既是上面程序中我们使用的端口号)


    如果出现图中红色方框中的内容,既表示服务器端程序运行正常。


  • 相关阅读:
    gcc 编译
    UltraEdit 添加到右键菜单
    linux 编译错误:undefined reference to `__gxx_personality_v0'
    UltraEdit 取消生成.bak文件
    容器
    Windows CEvent事件
    Windows _beginthreadex 线程类与线程池
    C++ 工厂模式
    Mutex linux线程锁
    windows CRITICAL_SECTION 线程锁
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3028407.html
Copyright © 2020-2023  润新知