关于自定义协议利用SOCKET传输文件 socket 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你把数组定义成8192,不代表你每次读取的字节就是8192,这是两回事,每次读取你都要根据read方法返回值才能够确定实际读取了多少个字节。 那我应该如何确定客户端需要read多少次,从这边的控制台输出结果来看,客户端好像每次还是读取了8192但是还是没有读取完,服务器最后一次发送的字节数是6000+,但是客户端最后的读取字节数还是8192,是否在我不知道的时候,服务器的write在我没调用flush的时候又悄悄发送了数据 那我应该如何确定客户端需要read多少次,从这边的控制台输出结果来看,客户端好像每次还是读取了8192但是还是没有读取完,服务器最后一次发送的字节数是6000+,但是客户端最后的读取字节数还是8192,是否在我不知道的时候,服务器的write在我没调用flush的时候又悄悄发送了数据socket 要写得比较好 是个庞大的话题. 虽然有mina等开源jar可用 但依然是个庞大的话题.所以.. 目前你最需要的还是补足这方面知识.1.你不能确定客户端read多少次. 根据不同的 mtu 以及包的转发规则, 最后一个 8192的数据会分成多少个碎片到达终端很难确定.2.服务器不会神出鬼没般的给客户端随意发数据过去. (这又不是神话传说)3.如果你仅仅是要定关于 8192字节这么个简单的协议的话. 我建议你这么干: *) 服务器不管什么情况下(无论需要不需要发这么多数据) 都固定的一次发8192字节. 然后客户端while循环去读这81924.如果想写得比较好我建议你这么干: *) 定义一个包长在前2个字节里(short) *) 客户端先接这个short, 再while循环去读取这 short个字节. 一个好的文件传输协议是需要完善的实现的,你这个协议太粗糙了吧。。请参考FTP,TFTP协议。附一个TFTP协议的报文格式可以参考 帮忙注释一下这个字符串匹配方法,没看懂呀 多个不同任务使用多线程如何限制总的线程数 在Eclipse中如何修改web.xml文件 如果能够双击jar文件,即可执行? 想把¥123,456.00的货币值以decimal形式存入数据库 最近发现一个暴怪的 JAR 文件问题!!请各位大侠指点!!! 高手请进!!!!!!!! JAVA程序员的薪水??? 虚心向各位大哥请教!有关applet发布的小问题 中文显示不出的问题 关于ObjectInputStream 报错 invalid stream heade 容器内对象排序问题
socket 要写得比较好 是个庞大的话题. 虽然有mina等开源jar可用 但依然是个庞大的话题.
所以.. 目前你最需要的还是补足这方面知识.1.你不能确定客户端read多少次. 根据不同的 mtu 以及包的转发规则, 最后一个 8192的数据会分成多少个碎片到达终端很难确定.
2.服务器不会神出鬼没般的给客户端随意发数据过去. (这又不是神话传说)
3.如果你仅仅是要定关于 8192字节这么个简单的协议的话. 我建议你这么干:
*) 服务器不管什么情况下(无论需要不需要发这么多数据) 都固定的一次发8192字节. 然后客户端while循环去读这8192
4.如果想写得比较好我建议你这么干:
*) 定义一个包长在前2个字节里(short)
*) 客户端先接这个short, 再while循环去读取这 short个字节.
请参考FTP,TFTP协议。
附一个TFTP协议的报文格式可以参考