zoukankan      html  css  js  c++  java
  • head first c<11>在根据网络编程

    博文可以在一个大的网络通信实现,但是,一个人只能起到,我们能够给每个clientfork()子进程,实现诸多的服务。

     

    方法:

    client连到server以后,server启动一个新创建的套接字对话。也就是说父进程能够继续连接下一个client。而子进程来须要处理

    accept()创建的副套接字,实现通信功能。

    父进程克隆子进程后能够关闭副套接字close(connect_d),而子进程能够关闭主监听套接

    字close(listener_d)。

     

    说了半天就是,一个仅仅负责拉客,一个仅仅负责接客.

     

     

    while(1)
    
    {
    
        int connect_d = accept(listener_d,(struct sockaddr *)&client_addr,&address_size); 
    
        if (connect_d == -1) 
    
            error("无法打开副套接字");
    
        if(!fork())  //假设返回0。说明我在子进程中
    
       {     
    
          close(listener_d); //关闭监听套接字
    
          process();   //通信过程
    
          close(connect_d); //结束后,关闭通信套接字
    
          exit(0);                //一旦通信结束,子进程就应该退出程序,以防进入server的主循环
    
       }
    
       close(connect_d);  // 父进程关闭通信套接字,继续准备连接下一个client。然后再fork()
    
    }
    


     

    总结

    <1>socket()创建套接字

    <2>server四部曲:

           B=bind();

           L=listen();

           A=accept()。

           B=開始对话;

    <3>fork()克隆子进程。同一时候处理多个client

     

     

     

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    3.27上午
    3.24上午 补
    2017.3.27下午
    2017.3.27上午
    2017.3.24下午
    2017.3.24上午
    2017.3.23下午
    2017.3.23上午
    2017.3.22上午
    2017.3.21下午
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4753250.html
Copyright © 2011-2022 走看看