请问linux下socket的刷新缓冲区与windows下的方法不一样吗

Rush_2008
请问linux下socket的刷新缓冲区与windows下的方法不一样吗

我在windows下用连接了socket之后,

        $CliSocket = IO::Socket::INET->new('PeerAddr' => $var{IpAddress},
                                           'PeerPort' => $var{IpPort},
                      'Proto'    => $Proto);

使用 $CliSocket->flush();

但是在linux下,我 syswrite之后,然后flush,服务端却报收不到信息。请大家帮忙看下是什么问题?
  my $relen = syswrite($CliSocket,$strConnectString,$lencon);
    $CliSocket->flush();

flw
都已经 syswrite 了,再 flush 不是多此一举嘛。

Rush_2008
回复 #2 flw 的帖子

syswrite ,就会自动刷新缓冲区?

不过在linux下,服务端还是收不到信息,每次都要到程序关闭的时候才收到。应该是在缓冲区没发出去

apile
先flush再syswrite...

Rush_2008
[quote]原帖由 [i]apile[/i] 于 2008-6-18 13:14 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8612936&ptid=1162418][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
先flush再syswrite... [/quote]

一样还是不行~

Rush_2008
IO::Socket::INET 中有个autoflush(),我调用了这个自动刷新,也没起到效果。

$socket -> autoflush(1);

flw
抓包吧。
程序有了问题,要调试,而不是尝试。

Rush_2008
谢谢提醒,要调试不是尝试。