【C++/Socket】从Windows向Linux传输文件时有细微的数据丢失?该如何解决

【C++/Socket】从Windows向Linux传输文件时有细微的数据丢失?
最近写了一个C/S模式的小程序用来传本地Windows下的文件到linux服务器上,结果发现传上去的文件总是少那么一些字节,导致文件损坏无法使用。在windows使用 Winsock2.h 传数据到linux标准的 sys/socket.h 通信有什么需要注意的吗?

主要DATA发送代码/Windows:

C/C++ code

   pFile = fopen ("c:\\BT.rar" , "rb");
   if (pFile == NULL) perror ("Error opening file");
   else 
   {
           size_t ret;
        while((ret =  fread(&mystring,1 ,1024, pFile) )  > 0)
        {
            send(sockClient,(char *) &mystring,ret,0);
            memset(&mystring,0,1024);
        }
         fclose (pFile);
   }





主要DATA接受代码/Linux:

C/C++ code

        size_t ret = 0;
        while((recvMsgSize = sock->recv(echoBuffer, RCVBUFSIZE)) > 0)
        {
            ret = fwrite(echoBuffer,1,recvMsgSize,pFile);
            memset(echoBuffer,0,RCVBUFSIZE);
        }
        printf("file transfer completed!\n");






------解决方案--------------------
一般都是先send文件的大小字节数,然后send文件数据。接收端先接收得到需要recv后续数据的大小,然后recv直到接收完毕~
------解决方案--------------------
代码不够全,无法帮你调试
------解决方案--------------------

------解决方案--------------------
不应该的。socket不管操作系统
unix/linux和dos/windows有一点区别是文本文件的换行,确认下linux下也是用b方式打开文件
------解决方案--------------------
探讨
不应该的。socket不管操作系统
unix/linux和dos/windows有一点区别是文本文件的换行,确认下linux下也是用b方式打开文件

------解决方案--------------------
http://topic.****.net/u/20111112/12/80a26383-219a-4503-8cb2-3e24f226a733.html
------解决方案--------------------
主要是你发送和接收时,处理的数据数组等是否一致.