服务器连续向客户端发送两个文件,客户端接收时怎么区分这两个文件的边界
问题描述:
服务器连续两次调用send向客户端发送两个文件,客户端使用recv函数接收时怎么区分这两个文件的边界?
求大神解答
ps:
服务器代码:
send(fd, 文件1内容);
send(fd, 文件2内容);
客户端代码:
recv(fd, buffer);
像这样的逻辑,客户端会不会吧两个文件的内容都放到buffer呢?
答
有可能,因为tcp都是数据流。接收端也都是一块块数据,并不会为你把文件分开,你需要自己加分隔符等来让接收方知道区分
答
服务器给客户端发送信息都是通过打包发送的,这个包里面包含了协议,版本,数据大小和内容(这是最基本的),通过数据大小可以知道这个信息的大小,当然如果只是简单的一句话信息,完全可以自己申请一个合适的空间去接收,sizeof()可以知道大小的