求助,一个socket的fork问题
这是一个客户端的代码片段,其中SOCK已经连接到了服务器的指定端口,问题是,如果去掉着色的代码,服务器端能正常接收到客户端命令行输入的字符串,加上着色的代码就有问题,服务器端收不到,同时客户端不能继续输入字符串,问题出在哪里呢?
SOCK->autoflush(1);
defined(my $child = fork()) or die "Can't fork: $!";
if($child == 0){
while(my $msg_out =<>){
SOCK->print( $msg_out);
sleep(1);
}
}else{
while(my $msg_in = <SOCK>){
print $msg_in;
sleep(1);
}
}
另外,我的本意是客户端连接成功后,分成两个进程,一个负责发生,一个负责接收,有更好的组织形式吗?
SOCK->autoflush(1);
defined(my $child = fork()) or die "Can't fork: $!";
if($child == 0){
while(my $msg_out =<>){
SOCK->print( $msg_out);
sleep(1);
}
}else{
while(my $msg_in = <SOCK>){
print $msg_in;
sleep(1);
}
}
另外,我的本意是客户端连接成功后,分成两个进程,一个负责发生,一个负责接收,有更好的组织形式吗?
作者: carywfy 发布时间: 2011-05-28
是不是分进程分的有问题。我也不太懂。
作者: kingwmj 发布时间: 2011-05-28