linx c socket 通信请教
小弟以前也作做过一些linux socket 的开发,不过说实话,很多socket的精华还没理解,现在有个问题想请教下各位。
内容是:一个客户端与服务端连接后,发送一些信息过去,然后会用这个连接路线,接收服务端发送的数据,数据多少、何时数据到达都不确定。每次都是单独连接。
也做了几个模型,不过很多时候数据接收不到。(有时可以接收到)
不知道这个如何处理好,谢谢。
思路1:
2个线程,一个无限群换负责接收数据。一个用于正常业务。
思路2:
fork 一个子线程,用于无限接收数据。
[解决办法]
fork出来的是子进程吧...
将接收数据的任务写到线程中,线程中用一个while(1)的无限循环结构来接数据。这个线程最好一连接上就开启,不然中间有其他的阻塞可能让线程没法启动
[解决办法]
LZ说的这两种思路并没有什么本质上的区别。你可能要花点时间去找程序的bug,为什么很多时候收不到。
两种思路的差别:
fork适合用于同步通迅。即从会话建立到会话退出,整个过程由一个子进程来处理。而且,这种业务的处理基本是独立的,相互之间没有太多关联。
多线程的方式可以适合于同步或者异步处理,尤其适合于事务之间存在很多业务关联的情形。其优势在于减少内存资源消耗,以及共享进程空间的许多信息,但代码一般也会比fork方式复杂。