问题:   用java做客户端接受c通过socket传过来的数据包,c端把一个文件分成几个包传输,每个包的以缓冲2048字节来发送,请问java端怎么接受全部的数据??   请教各位了,请提示相关代码.

解决方案 »

  1.   

    这和语言没关系,用什么语言都一样吧。 你想好文件传输的protocol,然后再写。 比如,怎么确定文件已发完,如果是UDP包的话你还得确定有没有丢包什么的。
      

  2.   

    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;
        }
    }
      

  3.   

    楼上的提示有点道理,先谢了,明天去试试,一楼的规则这些肯定是先定义好的,udp数据报发送的形式是不用的,这样就保证不了数据的完整性c通过socket通讯是字节形式发送的,java这边就需要处理字节,这块是得到了文件,但文件中有部分数据是多出的,还有个别是不正确的,不知是否跟字节的顺序有关
      

  4.   

    还有一点,c服务端发过来的报文注意点,开头8位为长度,后面跟内容,报文发送完以#sendend结尾.该怎么接受报文,然后包接受的报文一行一行写入文件中呢??(写文件部分就不用提示,只需要提示下怎么接受到传过来的字节数,然后怎么根据开头部分的大小来接受传过来的报文)谢谢各位发表意见,分不够再加
      

  5.   

    http://cuisuqiang.iteye.com/blog/1434416肯定有所帮助
      

  6.   

    http://cuisuqiang.iteye.com/blog/1434442不动联系我