博文可以在一个大的网络通信实现,但是,一个人只能起到,我们能够给每个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

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

head first c&lt;11&gt;在根据网络编程的更多相关文章

  1. C++11网络编程

    Handy是一个简洁优雅的C++11网络库,适用于linux与Mac平台.十行代码即可完成一个完整的网络服务器. 下面是echo服务器的代码: #include <handy/handy.h&g ...

  2. python学习笔记11 ----网络编程

    网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...

  3. 六星经典CSAPP-笔记(11)网络编程

    六星经典CSAPP-笔记(11)网络编程 参照<深入理解计算机系统>简单学习了下Unix/Linux的网络编程基础知识,进一步深入学习Linux网络编程和TCP/IP协议还得参考Steve ...

  4. C++11新特性之六——元编程

    C++11新特性之六——元编程

  5. 第11组 团队Git现场编程实战

    第11组 团队Git现场编程实战 组员职责分工: 前端部分: 陈郑铧:构架的搭建,前端模块开发 陈益:前端模块开发 李镇平:前端模块开发 后端部分: 沈国煜:后端模块开发 王泽鸿:后端模块开发 林铮威 ...

  6. C++11原子操作与无锁编程(转)

    不讲语言特性,只从工程角度出发,个人觉得C++标准委员会在C++11中对多线程库的引入是有史以来做得最人道的一件事:今天我将就C++11多线程中的atomic原子操作展开讨论:比较互斥锁,自旋锁(sp ...

  7. 11. 第十篇 网络组件flanneld安装及使用

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483834&idx=1&sn=b04ec193 ...

  8. linux命令之chmod 2011.11.24转载于网络

    使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode file... 说明 : Linux/Unix 的档案调用权限分为三级 : 档案 ...

  9. head first c&lt;11&gt;初探网络编程上

    server连接网络四部曲. 为了与外界沟通,c程序用数据流读写字节.比較经常使用的数据流有标准输入.标准输出.文件等. 假设想写一个与网络通信的程序.就须要一种新的数据流----------套接字. ...

随机推荐

  1. Hadoop单机版安装,配置,运行

    Hadoop是最近非常流行的东东啦,但是乍一看都觉得是集群的东东,其实在单机版上安装Hadoop也是可以的,并且安装好以后可以很方便的进行程序的调试,调试好程序以后再丢到集群中,放心的算吧,呵呵.. ...

  2. HttpClient(联网)

    抽样: void GameRequest::initRequset(const char* url, cocos2d::CCObject* pTarget, cocos2d::SEL_CallFunc ...

  3. JUnit4.8.2来源分析-6.1 排序和过滤

    Runner.sort.Request.sortWith和Sorter.apply yqj2065很快,他们搞死. Sorter.apply().Request.sortWith()和Sortable ...

  4. WPF换肤之七:异步

    原文:WPF换肤之七:异步 在WinForm时代,相信大家都遇到过这种情形,如果在程序设计过程中遇到了耗时的操作,不使用异步会导致程序假死.当然,在WPF中,这种情况也是存在的,所以我们就需要寻找一种 ...

  5. JFinal开发8个常见问题

    下面是8个最常见的问题总结. 1.Can not create instance of class: demo.DemoConfig. 觉得应该是你的路径有问题, 打开你项目的java build p ...

  6. DIV 居中对齐

    <div style="text-align:center;margin-right:auto;margin-left:auto">

  7. 一个css和js结合的下拉菜单,支持主流浏览器

    首先声明: 本人尽管在web前端岗位干了好多年,但无奈岗位对技术要求不高.html,css用的比較多,JavaScript自己原创的非常少,基本都是copy改动,所以自己真正动手写时,发现基础非常不坚 ...

  8. Android Google Map v2具体解释:开发环境配置

    Android Google Map v2具体解释:开发环境配置                                       --转载请注明出处:coder-pig 说在前面: 说到地 ...

  9. [原创] 使用rpi + crontab + git 定时向bitbucket 推送 照片

    #前提条件,你得有一个bitbucket的帐户 1.定时启动脚本代码 使用的是crontab Cronfile 内容如下: 此文件的意思是,每隔10分钟,就运行一次 /home/pi/Rpi_uplo ...

  10. 更改Activity的最底层的布局

    public void attachToActivity(Activity activity) { mActivity = activity; TypedArray a = activity.getT ...