我使用IO :: Socket :: INET作为客户端程序(TCP Socket)与 (Infosys)Server进行通信。套接字:用' n'发送请求并且没有' n'?
我的$袜子=新的IO ::插座:: INET(PeerAddr => 'xxx.xxx.xxx.xxx', PeerPort => '5000', 原=> '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'发送请求。
问题出现在服务器端还是客户端?
你能告诉你发送消息的地方吗?另外,你的平台是什么? – perreal 2013-03-19 08:09:52
$ 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;打印$ SOCK $ FinalMessage; – ungalnanban 2013-03-19 08:11:55
我使用Perl,操作系统是Debian 6.0.6 – ungalnanban 2013-03-19 08:13:17