1、在程序设计之初无法预知要传送的文件大小,文件可能会很大,所以要分块分成很多协议包传送吧?
2、文件的内容未知,如果分块传送,一种极端情况是:文件块里的所有字节全是0x00.这种情况下,要如何发送和接收数据?
3、若用TransmitFile()发送文件,接收端如何接收文件比较好?

解决方案 »

  1.   

    1. 发送文件前把文件长度信息先发过去,如果同时发送多个文件,就要自己定义简单的分包协议了。
    2. 文件数据值与发送毫无关系,调用api后获得本次接收数据的长度,根据接收长度来判断接收数据大小。
    3. TransmitFile发送文件和接收端如何接收没有直接关系,接收端才不管你调用api什么发送数据,他只管有数据过来就接收便是。
      

  2.   

    1、在程序设计之初无法预知要传送的文件大小,文件可能会很大,所以要分块分成很多协议包传送吧?
    是的,肯定是要设计协议来传输的,还要考虑多线程接收和包序问题2、文件的内容未知,如果分块传送,一种极端情况是:文件块里的所有字节全是0x00.这种情况下,要如何发送和接收数据?
    socket传输的是二进制,不是字符串,00对它而言不是结束符,不要担心。3、若用TransmitFile()发送文件,接收端如何接收文件比较好?
    这个函数就是封装了文件读取和发送函数(如果配合完成端口的话,还会牵涉到重叠IO的问题),你客户端该怎么接收还怎么接收,具体看回复 1和回复 2