|
此问题出在嵌入式的uclinux中,即CPU为NOMMU管理。
我在uclinux上运行了服务器端的程序,此服务器程序调用socket,bind,listen来建立一固定端口的监听。客户端使用服务器的IP+固定端口来连接服务器。
每个客户端中都已经固定设置了所要连接的服务器端口,不能更改,也就是服务器端一定要有此端口在监听。
单个客户端与服务器端都没正常。问题在于有多个客户端时候
当有俩个以上客户端连接服务器程序时,服务器vfork()出另一个经常来处理此连接,但是新fork出来的进程却不能使用已建立连接的socket描述符(因为其完全拷贝原进程,且重新执行,造成bind错误)。
我推测嵌入式CPU的NOMMU使得多进程间无法共享描述符等资源,不知道system IPC有没有效?能否在多进程间传递socket描述符?
我试了setsockopt进行IP端口复用,不知道是不是参数有问题,仍然是不能在服务器端同时bind同一个IP+端口。 |
|