LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 677|回复: 4

uclinux中网络编程的问题

[复制链接]
发表于 2004-11-9 18:02:39 | 显示全部楼层 |阅读模式
此问题出在嵌入式的uclinux中,即CPU为NOMMU管理。
  我在uclinux上运行了服务器端的程序,此服务器程序调用socket,bind,listen来建立一固定端口的监听。客户端使用服务器的IP+固定端口来连接服务器。
每个客户端中都已经固定设置了所要连接的服务器端口,不能更改,也就是服务器端一定要有此端口在监听。

单个客户端与服务器端都没正常。问题在于有多个客户端时候
当有俩个以上客户端连接服务器程序时,服务器vfork()出另一个经常来处理此连接,但是新fork出来的进程却不能使用已建立连接的socket描述符(因为其完全拷贝原进程,且重新执行,造成bind错误)。
我推测嵌入式CPU的NOMMU使得多进程间无法共享描述符等资源,不知道system IPC有没有效?能否在多进程间传递socket描述符?

我试了setsockopt进行IP端口复用,不知道是不是参数有问题,仍然是不能在服务器端同时bind同一个IP+端口。
发表于 2004-11-10 00:16:06 | 显示全部楼层
accept不是返回一个socket么
返回之后再fork
一般都是这么干的吧
不过uclinux我不懂的
 楼主| 发表于 2004-11-10 09:26:51 | 显示全部楼层
带有MMU的CPU上,这程序都没问题。
uclinux是基于NOMMU,不能fork,只能用vfork

有没有人试过用线程解决?
发表于 2004-11-10 11:55:25 | 显示全部楼层
我知道不能用fork
我只是说流程
发表于 2004-11-10 11:59:56 | 显示全部楼层
是在不行改用单进程+select试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表