两个问题,
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,我用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 提前定义,告诉对方,我给你1000个字节
2 约定结束标志,比如大家约定ASCII的0就是结束,但要求你的数据内部可不能有0出现哦
3 你关闭连接好了,对方就认为结束了,http1.1是第一种,有个ContentLength, http1.0是第三种,直接关闭连接。