我有一个TCP套接字,连接着一个C#服务器和一个Perl客户端。客户端应该从服务器接收XML流。XML文件(由C#程序生成)大约有437KB,但是客户端只能接收到408KB,无论缓冲区大小如何。在客户端上,我使用IO::Socket::INET,而服务器端使用了TcpListener和TcpClient的组合。我该如何正确定义客户端缓冲区?现在我正在使用以下代码:
# PERL CLIENT
my $socket = new IO::Socket::INET (
PeerHost => '192.168.*.*',
PeerPort => '*****',
Proto => 'tcp'
) or die "Error while creating Socket";
#
# OTHER STUFFS...
#
my $buffer = 500000000; # IT DOESNT SEEM TO USE THAT VALUE AT ALL
$socket->recv($xmlbody, $buffer);
// C# SERVER
// OTHER STUFFS...
byte[] result = encoding.GetBytes(xml);
clientStream.Write(result, 0, result.Length);
clientStream.Flush();
clientStream.Close();
tcpClient.Close();
tcpdump
或类似工具验证这是否是发送方的问题。 - ikegami