Java 当Internet连接丢失时,关闭与服务器的TCP连接

Java 当Internet连接丢失时,关闭与服务器的TCP连接,java,android,sockets,tcp,Java,Android,Sockets,Tcp,我在linux系统上有一个TCP服务器(用C编写),在android上有一个TCP客户端,当android的internet连接断开时,服务器似乎没有注意到,并且send和recv继续工作,就好像什么都没发生一样 我已经实现了heartbeat技术来检查死掉的连接,但这还不够好,它需要等待30秒才能获得死掉的客户端,并且在这个过程中一些数据会丢失 如何告诉服务器连接已关闭 想象一下:当索姆博迪已经挂断电话时,你会如何在电话里对他说“再见”?答:一点也不。不可能。因此,这不是一个android问题

我在linux系统上有一个TCP服务器(用C编写),在android上有一个TCP客户端,当android的internet连接断开时,服务器似乎没有注意到,并且
send
recv
继续工作,就好像什么都没发生一样

我已经实现了heartbeat技术来检查死掉的连接,但这还不够好,它需要等待30秒才能获得死掉的客户端,并且在这个过程中一些数据会丢失


如何告诉服务器连接已关闭

想象一下:当索姆博迪已经挂断电话时,你会如何在电话里对他说“再见”?答:一点也不。不可能。因此,这不是一个android问题。Sry。由于连接中断,数据已丢失。您看到的是TCP缓冲和重试的效果。您最终应该会看到
send()
recv
带有
errno==ECONNRESET。
不清楚您在问什么@cybergen“因此,这不是一个Android问题”是一个非sequitur。@服务器端的EJP连接保持活动状态,并继续发送数据(由于客户端不在另一端接收数据而丢失),没有错误。我需要让服务器在客户端失去连接时立即断开连接。@EJP我的意思是他应该更改标记,因为问题是服务器端和c/c++相关的。您不能让服务器立即断开连接。TCP不是那样工作的。故意地