当前位置:  技术问答>linux和unix

高分求高手赐教-关于linux下进程共享TCP套接字的问题

    来源: 互联网  发布时间:2015-01-11

    本文导语:  需求如下:在linux环境下,有一个服务器进程,它负责新连接的接入和原有连接的释放,它根据要求创生子进程去处理事务并且由子进程向远程连接发送报文。 目前的做法基于socket:服务器进程listen,并轮询listen的...

需求如下:在linux环境下,有一个服务器进程,它负责新连接的接入和原有连接的释放,它根据要求创生子进程去处理事务并且由子进程向远程连接发送报文。

目前的做法基于socket:服务器进程listen,并轮询listen的套接字和已经连接的套接字(select),如果获得新连接就通过管道告知事务子进程,从而事务子进程可以向连接的主机发送报文;如果远程连接断开,服务器进程断开连接,并告知事务子进程,则子进程可以不再尝试向其发送。

现在遇到这样的情况:当连接在子进程创生之前建立,则子进程可以在随后根据管道中传来的套接字(文件描述符)和远程主机建立连接(即可以向此套接字write报文等);而如果远程连接在事务子进程建立之后建立,虽然通过管道可以让子进程获致新的连接套接字(描述符),但无法再用write(FD,buff,length)之类的调用向远程主机通讯(有的情况是write返回成功但远程主机无法收到,有时导致子进程崩溃)。

不知道在原有远程连接断开后,子进程是否要对这个套接字作什么特别的处理;在对新连接的套接字或者重新连接的套接字操作前要作什么特别处理。

请有这方面经验的高手指点迷津。
高分相送!!!!

|
send_fd是在两个进程间发送描述符。
recv_fd是用来接收的。
clifd是流管道。fd是要发送的描述符。

|
文件描述符不单单是表面上的一个普通的int 类型,这个int没有办法传递给另外一个进程的。

而在fork时,父进程的打开的文件和环境变量内容能够传递给子进程。因此子进程能够继承父进程在fork前打开的所有文件。

这些可以在操作系统的课程中找到。

我不敢称高手,但我觉得这个方向是错误的(在fork之后父进程用管道传递文件描述符给子进程),建议你采用其他的设计思路。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高分请教,初次在unix下用c做个管理系统界面,还望赐教!
  • 请java 高手赐教,在线等待,高分!
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 谁参加过weblogic的证书考试,是否有经验可供参考?高分高分高高分
  • 哪里有JB6下载啊,高分相送,救命
  • 高分求救!我在uclinux上运行应用程序时出现内存分配错误,不知如何解决,解决者高分!!
  • 哪里去找中文的EJB文章?高分悬赏!
  • 有jsp的upload和download 代码么,高分相报!
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 高分寻求jsp代码(网上调查系统,新闻发布系统)就这点分了
  • 高分求购做饼图、线形图的源吗?
  • 关于linu下的中文输入.(高分:300)
  • 一个简单的问题,高分求助!!!
  • 高分求购jbulider6得注册码,企业版本,个人版本都要
  • Linux远程访问的问题,高分求教:)
  • 请问哪儿有Solaris8的光盘映像文件下载???高分相赠!!!
  • 高分求“Ration Rose”&"JBuilder6.0"&"VisualCafe"
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • 高分求购:linux和unix命令大全电子文档
  • 急救:关于BLOB数据类型---在线等待,高分相送!
  • 求UNIXWARE7.11的原版下载,高分相赠,在线等待!!!
  • 关于java?高分相送!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3