精华帖 (0) :: 良好帖 (0) :: 新手帖 (9) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-06-05
我记得socket 默认都是长连接啊
难道我记错了,楼主用mina来做啊,很不错的网络框架 |
|
返回顶楼 | |
发表时间:2010-06-05
通过你的描述,此断开不是意外断开,而是逻辑断开。很可能是你没有按照通信协议做出正确的应答,导致对方判定你这边为非法客户端而主动断开连接。
通信协议就是双方约定好的,S端(或C端)发出什么样的数据,C(或S端)端怎么接收、解析、响应。通信协议里定义了来往的数据如何构成一个完整的包(或帧)。你贴出的代码反映出你没考虑这些问题啊。 |
|
返回顶楼 | |
发表时间:2010-06-05
应用层协议~~~
|
|
返回顶楼 | |
发表时间:2010-06-06
最后修改:2010-06-06
看看这篇文章 ,看对你有什么帮助么
http://ahuaxuan.iteye.com/blog/657511 |
|
返回顶楼 | |
发表时间:2010-06-06
coreymylife 写道 对方服务器状态为FIN_WAIT2说明对方已经在关闭TCP/IP的四次握手中进行了半关闭操作,导致这种问题有可能是你没有按照对方的协议发送数据,导致对方主动切断了套接字。另外请问是已连接立马断开,还是在发送完数据断开,亦或者是在不进行任何操作间隔一段时间断开。?
是已连接立马断开 我也不想这么纠结啊,可总连接不上,各种方法都试一试,就成这样了 |
|
返回顶楼 | |
发表时间:2010-06-06
javafound 写道 问题可能出在这一行代码:
String inline = in.readLine(); System.out.println(inline); 你不要一行一行的读,先read一个byte试试.因为对方是C++; 可能没做转换,有big-edian和little-endian(主机字节顺序和网络字节顺序)的区别 这个我也试过了,现在的问题是我还没开始正式接收数据,对方就已经断了,应该是在建立连接时就有问题, |
|
返回顶楼 | |
发表时间:2010-06-06
最后修改:2010-06-06
username 写道 通过你的描述,此断开不是意外断开,而是逻辑断开。很可能是你没有按照通信协议做出正确的应答,导致对方判定你这边为非法客户端而主动断开连接。
通信协议就是双方约定好的,S端(或C端)发出什么样的数据,C(或S端)端怎么接收、解析、响应。通信协议里定义了来往的数据如何构成一个完整的包(或帧)。你贴出的代码反映出你没考虑这些问题啊。 我也考虑过是这个问题,但现在我这边只需要接收数据就行了啊 多谢大家这么地尽心尽力帮我解决问题,特别是dch1287,非常感谢 |
|
返回顶楼 | |
发表时间:2010-06-06
shania0226 写道 username 写道 通过你的描述,此断开不是意外断开,而是逻辑断开。很可能是你没有按照通信协议做出正确的应答,导致对方判定你这边为非法客户端而主动断开连接。
通信协议就是双方约定好的,S端(或C端)发出什么样的数据,C(或S端)端怎么接收、解析、响应。通信协议里定义了来往的数据如何构成一个完整的包(或帧)。你贴出的代码反映出你没考虑这些问题啊。 我也考虑过是这个问题,但现在我这边只需要接收数据就行了啊 多谢大家这么地尽心尽力帮我解决问题,告别是dch1287,非常感谢 不会如此诡异吧,只需要接受数据就行了,应用层的协议如此简单,感到怀疑。不知道400的接口会不会和我做手机网关那样,长连接需要保持心跳通信,不然貌似15秒就断。 |
|
返回顶楼 | |
发表时间:2010-06-06
用Mina框架来实现
|
|
返回顶楼 | |
发表时间:2010-06-06
会不会连接上有没有做IP验证之类的?对方有给示例程序或文档么?
|
|
返回顶楼 | |