2 qq 32640683 qq_32640683 于 2017.08.30 13:34 提问

socket通信,服务器端收到客户端的访问的数据后,找不到返回的链路。 50C

最近在写socket同步短连接的通讯方式,现在是服务端可以收到客户端传递的报文信息,
现在的问题是,客户端在读取服务端返回的报文时,读取不出来,经查询是服务端找不到返回的链路,客户端在每次传递完报文后就关链了,服务器端的超时时间是60秒,怎样让客户端保持在60秒后关闭链。急求 !!!!!!!望大神解答,必有重谢!!!!!

6个回答

lcmsx
lcmsx   2017.08.30 14:05

你使用socket通信,服务端是一直在线的。那么你客户端连接服务端成功后,不关闭就可以了呀。然后客户端上设置一个超时时间,如果客户端没有坐任何请求或者接受数据,那么60秒后你把客户端断开连接就行了的呀。如果你客户端发送了信息后就关闭了连接,那么肯定就收不到接下来服务端返回的数据了的。如果你先客户端发送完毕消息后就关闭,那么这是个单向通信,服务端是无法反向发送数据给客户端的 。

如果对有用,麻烦楼主好评,谢谢。

qq_32640683
qq_32640683 你好 能否提供一个详细的代码样例?
3 个月之前 回复
Small_Mouse0
Small_Mouse0   Ds   Rxr 2017.08.30 14:13

可以在客户端加个while循环,,等着服务器返回的信息,,没等到就一直循环

题主要求60秒,,可以给循环加个终止条件及60秒(这个可以通过java获取本地时间进行比对)

“让客户端保持在60秒后关闭链”这个需求可以实现,不是问题,,

楼上说不能反响发数据,,这个我一会测一下再回复

qq_30069409
qq_30069409   2017.08.30 14:23

读不出来, 太广泛了,有没有个片段看看

what951006
what951006   Rxr 2017.08.30 18:41

这个比较容易的,另启一个线程中来做相应的逻辑处理。

zy841958835
zy841958835   Ds   Rxr 2017.08.31 09:01

你的客户端在调用os.write("socket".getBytes()); 这步之后调用下
socket.getInputStream().read()

u011315960
u011315960   2017.08.31 10:48

我觉得是不是你的客户端或者是服务端提前调用了close方法,导致提前关闭了长连接,而且60秒后关闭这个很奇怪,如果是操作结束了,还是尽快关闭比较好

Csdn user default icon
上传中...
上传图片
插入图片