作者CIHM (小新)
看板AndroidDev
标题[问题]socket侦测clint端或server端断线问题
时间Sat Mar 23 00:34:19 2013
大家好,小弟有个问题:
假设有两台手机用socket连接,这边假设A(当server)跟B(当client)
请问要如何知道双方其中一方以断线?
已经试过 isconnect() 但没办法...
目前想到的办法只有双方每隔几秒就检查,
不知道还有没有其他方法?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.122.184.52
1F:推 gpc:网路的东西就是只能这样做阿... 03/23 13:39
2F:推 gpc:不然你read怎会丢一个timeout的exception出来 03/23 13:41
3F:→ gpc:假设用鸽子封包发一个讯息 20秒後才到 这样是否要算断线呢 03/23 13:43
4F:→ CIHM:恩,谢谢. 想说有没有API可用XD 03/23 15:13
5F:推 Killercat:其实TCP是有CLOSE-WAIT/LAST-ACK的 只是有些实作都选择 03/24 13:21
6F:→ Killercat:time-out当close。 03/24 13:22
7F:→ Killercat:正常来讲 Socket.close()或者OutputStream.close() 03/24 13:23
8F:→ Killercat:都会送出fin/ack(触发Close-Wait)让对方知道自己要断掉 03/24 13:23
9F:→ Killercat:只是因为某些原因,大多数人都不喜欢这样做 =P 03/24 13:24
10F:→ Killercat:当client/server都是自己做的话 又需要明确地知道对方 03/24 13:24
11F:→ Killercat:主动断线了,那可以考虑用Socket.close主动通知 03/24 13:25
12F:→ Killercat:至於UDP,完全没有这种机制,得自己实作通知封包 03/24 13:25