日期:2014-05-16  浏览次数:20602 次

关于Socket通信的问题(60+20)
我写了一个Socket通信程序.采用多进程方式.现在有这样一个问题:客户端联接该程序时,第一次联接,服务程序显示有联接进来,但是客户端发来的数据却无法显示.然后客户端再联接一次,这时再发数据,服务端就可以收到了.程序在:http://community.csdn.net/Expert/TopicView3.asp?id=5531978

两贴一齐给分.谢谢


------解决方案--------------------
你怎么有两个myWork,第一个会停在那里,等到收到数据应该会打出来。
myWork(clifd);

if((childpid=fork())==0)
{
printf( "begin myWork1\n ");
close(listenfd);
printf( "begin myWork2\n ");
myWork(clifd);
printf( "begin myWork3\n ");
exit(0);
}
if (childpid <0)
printf( "fork error\n ");

printf( "hello over\n ");
close(clifd);

假设你没有第一个myWork,才会启动子进程,里面调用myWork,这时,你的main主线程可能在子进程收到数据之前将clifd关闭。这样子就永远看不到数据了。