我正在使用 IO::Socket::INET 客户端程序(TCP Socket)与(Infosys)服务器进行通信。
我的 $SOCK = new IO::Socket::INET ( PeerAddr => 'xxx.xxx.xxx.xxx' , PeerPort => '5000', Proto => 'tcp', );
$Sent_Message = $MAIN::REQUEST_NO . $Bitmap .$main::Req_String ;
$Total_Len = sprintf("%04d",length( $Sent_Message ) ) ;
#my $FinalMessage = $Total_Len . $Sent_Message."\n" ;
my $FinalMessage = $Total_Len . $Sent_Message ;
print $SOCK $FinalMessage;
我在行尾发送带有“\n”的请求。我没有收到回复。在服务器端,日志说响应已发送到客户端。
使用 wireshark 和 tcpdump 我正在检查数据包,我的系统没有收到任何数据包。
我发送了没有'\n'的请求,我收到了响应(立即)成功。
然后我又发送了 3 个请求,第一个带有 '\n' 第二个和第三个没有 '\n'。
所有 3 个请求都在等待服务器的响应。我已经杀死了进程 1 女巫发送带有“\n”的请求。之后,其他 2 个进程收到响应。
相同的客户端代码正在将请求发送到我的本地服务器,但没有“\n”。
服务器没有收到请求。(缓冲区未刷新)。
我的疑问是使用 '\n' 和没有 '\n' 发送请求有什么区别?
为什么其他 2 个进程没有立即收到响应。(发送的请求没有'\n')?
我发现问题是在行尾使用 '\n' 发送请求。
问题出在服务器端还是客户端?