java socket 接受c语言发送的字节包问题 问题: 用java做客户端接受c通过socket传过来的数据包,c端把一个文件分成几个包传输,每个包的以缓冲2048字节来发送,请问java端怎么接受全部的数据?? 请教各位了,请提示相关代码. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这和语言没关系,用什么语言都一样吧。 你想好文件传输的protocol,然后再写。 比如,怎么确定文件已发完,如果是UDP包的话你还得确定有没有丢包什么的。 have a tryInputStream is = your_socket.getInputStream();int len = 2048;byte[] b = new byte[len];int readlen = 0;while (true) { readlen = is.read(b, 0, len); //do something here if (readlen != len) { break; }} 楼上的提示有点道理,先谢了,明天去试试,一楼的规则这些肯定是先定义好的,udp数据报发送的形式是不用的,这样就保证不了数据的完整性c通过socket通讯是字节形式发送的,java这边就需要处理字节,这块是得到了文件,但文件中有部分数据是多出的,还有个别是不正确的,不知是否跟字节的顺序有关 还有一点,c服务端发过来的报文注意点,开头8位为长度,后面跟内容,报文发送完以#sendend结尾.该怎么接受报文,然后包接受的报文一行一行写入文件中呢??(写文件部分就不用提示,只需要提示下怎么接受到传过来的字节数,然后怎么根据开头部分的大小来接受传过来的报文)谢谢各位发表意见,分不够再加 http://cuisuqiang.iteye.com/blog/1434416肯定有所帮助 http://cuisuqiang.iteye.com/blog/1434442不动联系我 一个static引发的问题 如何避免java热加载中的几个问题 判断两字符是否相等 struts2.0与struts1.1的线程模式问题 字符串插入问题,超级简单的问题? 为什么我的可用分停止增加了?不是每天加10分吗??? 紧急问题 图片! 哪里有jrun302的注册码??? JBuilder 3.5 需要 serial number 与 key请大家给我一两个 一个小问题:java bean 组件模型与CORBA 组件模型有什么区别? 谁能介绍javax.sound.midi包里的一些类 在线考试系统
int len = 2048;
byte[] b = new byte[len];
int readlen = 0;
while (true) {
readlen = is.read(b, 0, len);
//do something here
if (readlen != len) {
break;
}
}