做过unix c和JAVA两种语言的socket服务器编程的高手来讨论一下多进程的问题!!!

jhtisboy 2003-05-28 01:05:38
我最近由于业务的需要用两种语言做了socket编程
在这里主要是讨论一下两种服务器端的多进程和多线程问题
我最开始做java,后来做C

在unix c中我用多进程实现
我原来是想用一个进程serverSocket.accept(),然后把接收回来的clientSocket放在共享内存中
然后启动多个子进程从共享内存中去取出clientSocket
其实这种思想出至JAVA的多线程实现了,如果你做过就清楚了
但是这种方式实现不了,因为子进程取出来的clientSocket不能read,write
后来只能用多个进程accept了

java中就简单的多了,就是按我最初的思想,用一个线程accept,接收回来的clientSocket放在pool中
然后用多个线程去取出来就行了。

我现在想问的是,各位高手也是象我这样做的吗?
还有更理想的方法吗?
我是刚做socket的,请指导一下。。。。
...全文
41 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hewenhui 2003-06-30
  • 打赏
  • 举报
回复
最好不用多进程,你可以比如说来一个客户用p_thread_create开一个线程,开到1024连接,在用fork()开进程,在新的进程里再开线程,否则光用进程,对unix操作系统冲击太大了,告诉你用ace人家已经包装好的socket通信,还有许多ipc包装,如fifo,share memory,mQ,等等,我在unix下写了3年了,自己也写了一些C++ class for unix ipc但后来用ace后,完全已经不用自己的了,我哭。。。
hewenhui 2003-06-30
  • 打赏
  • 举报
回复
再提醒一句,java没有进程概念,(线程到有daemon概念),在unix上写代码,最好还是用c++,因为jvm本身不是daemon,非要做的话可以在inet文件写上你的执行文件,必须做socket的port,有点想nt上的service
jhtisboy 2003-05-28
  • 打赏
  • 举报
回复
有电子版本的吗?
kp_flysky 2003-05-28
  • 打赏
  • 举报
回复
你可以看一下unix网络编程这本书
unix c也是可以支持pool

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧