两个问题,
1,我用socket发送一个文件给另一端,我是这样设计流的,前两个字节记录文件大小(当然,我的文件大小有限,这里两个字节足以描述大小),然后从第三个字节开始写入文件的内容。
接下来,在接收端就先读前两个字节,得到后面剩余部分(文件内容)的长度,然后根据这个长度创建一个字节数组,把流里剩余的内容读到这个数组里
这里我想问,能不能在没有长度标志的情况,也能发送一个文件,并成功接受
2,客户端发送分为两步(没写出真正代码,只是写出大概意思)
   stip 1: write();  // 第一步,写入500字节
   setp 2: write()   //第二步,写入1000字节
   服务器端
   setp 1:  read()   //第一步,接受500字节
   step 2: read()   //第二步,接受1000字节如果这个时候,客户端发送了step1的500个字节
而服务器也已经接受了前面500个字节然后,服务器开始了step2的读取,但是客户端还没开始发送step2的1000字节那么会发生什么 

解决方案 »

  1.   

    流是不用你搞长度的,如果采用字节流一个一个读的话读到-1就是结尾,如果是文件流一行一行读那么读到null为结尾。第二个问题,发生阻塞。等那1000个字节发来。
      

  2.   

    流是什么?就是一堆不知道是啥的连续数据。那么如何界定边界呢?
    1 提前定义,告诉对方,我给你1000个字节
    2 约定结束标志,比如大家约定ASCII的0就是结束,但要求你的数据内部可不能有0出现哦
    3 你关闭连接好了,对方就认为结束了,http1.1是第一种,有个ContentLength, http1.0是第三种,直接关闭连接。