引用:janesjardin 发表于 2017-01-19 15:15 Good job! |
引用:JackJiang 发表于 2017-01-19 11:44 嗯,思考了版主的提议并参考了这个帖子,这个问题就解决了 TCP传输下的困境—记在《Mina实现自定协议传输》之后 |
引用:janesjardin 发表于 2017-01-19 10:48 你在sessionOpened里write?这很奇怪吧 |
问题已解决,因为没有对上服务端的接收数据格式。 但是现在新的问题是在sessionOpened循环调用session.write会丢失一些数据,就是没有触发messageSend发送不出去,丢失的数据是随机的。有没有遇到类似问题的朋友? |
引用:janesjardin 发表于 2017-01-18 17:23 原来如此 |
引用:一地鼻血 发表于 2017-01-08 11:49 这个就是pc项目啊,老项目没办法,现在来不及改 |
我在做任务啊啊啊啊啊 啊啊啊啊 啊 |
用MINA传文件?都什么时代了,还用pc端时代的im实现方法 |
引用:janesjardin 发表于 2017-01-05 17:38 最快的解决方法就是,找到官方最简单的TCP传输2进制数据的方法,运行看看会不会出错,不会出错就把读写byte的那段改成从你的文件里读取byte并发送到服务端由服务端保存。 你上面这一大堆代码也不知道哪复制来的,无法证明是否能用,建议从最简单的试起。 |
引用:JackJiang 发表于 2017-01-05 17:27 已经试过在encode里只传byte流,或在encode里没有代码只在opensession里传入文件byte,报错依然一样 |
引用:janesjardin 发表于 2017-01-05 17:23 你文件传输用的肯定是TCP协议,对于应用层而言数据就是个“流”的概念,而且你处理的时候一定要把它作为最底层的byte处理,建议看下MINA的tcp传输数据的DEMO就知道了,传一个文件,就相当于持续传输一个很大的byte流而已,道理是一模一样的。 |
我看你的代码很诡异,因为你说的只是需要客户端向服务端传文件,所以就是客户端的编码器跟服务端的解码器对上就行了。 但能看到你客户端的编码器里为何涉及到utf-8这种跟String内容有关的代码及操作,显然你两边只应该把所有数据内容作为byte来处理才合适(即传输时是无需理会具体内容,反正对于底层而言所有数据都是byte),写入文件时同样应该写入的是底层的byte。 你仔细检查一下代码。 |
新手小白,不是很懂。它为什么在这里要定义65535,IP数据包最大值限制长度 |