qq_32640683
qq_32640683
采纳率25%
2017-08-30 05:34

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

50

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • u011315960 珠穆朗玛小王子 4年前

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

    点赞 评论 复制链接分享
  • zy841958835 cloudyzhao 4年前

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

    点赞 评论 复制链接分享
  • what951006 小乌龟在大乌龟背上 4年前

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

    点赞 评论 复制链接分享
  • qq_30069409 wanwan_1996 4年前

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

    点赞 评论 复制链接分享
  • Small_Mouse0 鼠小 4年前

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

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

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

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

    点赞 评论 复制链接分享
  • lcmsx 乱臣贼子 4年前

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

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

    点赞 评论 复制链接分享

相关推荐