Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c语言中的TCP连接丢失问题#_C#_Sockets - Fatal编程技术网

C# c语言中的TCP连接丢失问题#

C# c语言中的TCP连接丢失问题#,c#,sockets,C#,Sockets,在我的应用程序中,我有一个服务器在本地主机上的端口上监听客户端连接。然后我让客户端运行并与服务器建立连接。我使用c#中的tcpListner作为服务器,客户机使用Inet函数用perl编写 客户端和服务器之间的连接是毫无问题地建立的,服务器接收到来自客户端的消息。但是,大约3到4秒后,连接就会断开。我使用netstat-a查看连接的状态是否仍然是“已建立”。在DOS上使用netstat命令后,结果是“Close_wait” 如何调试此问题?哪一侧导致连接中断 谢谢 编辑: 使用Microsoft

在我的应用程序中,我有一个服务器在本地主机上的端口上监听客户端连接。然后我让客户端运行并与服务器建立连接。我使用c#中的tcpListner作为服务器,客户机使用Inet函数用perl编写

客户端和服务器之间的连接是毫无问题地建立的,服务器接收到来自客户端的消息。但是,大约3到4秒后,连接就会断开。我使用netstat-a查看连接的状态是否仍然是“已建立”。在DOS上使用netstat命令后,结果是“Close_wait”

如何调试此问题?哪一侧导致连接中断

谢谢

编辑:


使用Microsoft网络监视器或Wireshark捕获网络数据包,或使用System.Net跟踪


如果不进行此类分析,套接字问题将无法轻松分析和处理。

使用Microsoft network Monitor或Wireshark捕获网络数据包,或者使用System.Net跟踪


如果没有这样的分析,套接字问题是不容易分析和处理的。

您是否有一个(小的)代码示例再现了该问题?如果没有更多的上下文,很难回答这个问题。服务器或客户端是否在某个点退出?大概在这3到4秒钟内,客户在做什么?服务器如何处理多个会话?哪一端在抱怨连接丢失:服务器端、客户端还是两者都有?两端都没有检测到连接丢失。我使用netstat命令发现连接丢失。连接状态为“close_wait”。在perl脚本发出第一条消息之后,我放置了一个sleep函数。然后我发送第二条消息。我只收到了第一条信息。sleep函数使perl脚本休眠约3或4秒。这里是Perl脚本代码:$tx\u socket=IO::socket::INET->new(PeerAddr=>127.0.0.1',PeerPort=>9000,LocalPort=>8000,Proto=>tcp',Type=>SOCK\u流,重用=>1)或die($!\n”);die(“init\u tx\u socket失败!\n”)除非$tx_socket;打印“socket good!\n”;$tx_socket->autoflush(1);$tx_socket->print(“Hello”);sleep(5);$tx_socket->print(“World”);很抱歉代码的格式。我只是复制并粘贴了它。您有(小的)吗复制问题的代码示例?如果没有更多的上下文,很难回答这个问题。服务器或客户端是否在某个时刻退出?在这3到4秒钟内,客户端大致做了什么?服务器如何处理多个会话?哪一端抱怨连接断开:服务器、客户端还是两者都有?两端都没有检测连接丢失。我使用netstat命令发现连接丢失。连接状态为“close\u wait”。我在perl脚本发出第一条消息后放置了一个sleep函数。然后我发送了第二条消息。我只收到了第一条消息。sleep函数使perl脚本休眠大约3或4秒。这里的perl脚本代码:$tx\u socket=IO::socket::INET->new(PeerAddr=>127.0.0.1',PeerPort=>9000,LocalPort=>8000,Proto=>tcp',Type=>SOCK\u流,重用=>1)或die($!\n”);die(“init\u tx\u socket失败!\n”)除非$tx_socket;打印“socket good!\n”;$tx_socket->autoflush(1);$tx_socket->print(“Hello”);sleep(5);$tx_socket->print(“World”);很抱歉代码的格式。我只是复制并粘贴它。
$tx_socket = IO::Socket::INET->new( PeerAddr => '127.0.0.1', PeerPort => 9000, 
    LocalPort => 8000, Proto => 'tcp', 
    Type =>SOCK_STREAM, Reuse=>1 ) or die("$!\n"); 
die("init_tx_socket failed!\n") unless $tx_socket; print "Socket good!\n"; 
$tx_socket->autoflush(1); $tx_socket->print("Hello"); 
sleep(5); 
$tx_socket->print("World");