本帖最后由 VisualEleven 于 2012-08-21 18:09:17 编辑

解决方案 »

  1.   

    不然就不要直接使用API TransmitFile,而是自己来通过TCP等send发送
      

  2.   

    我也怀疑与这个有关,但MSDN上不是说这个函数可以提高服务器的处理效率嘛,所以就用了。先改改看。先谢过了。
    不知道有没有人知道出现这种问题的具体原因?
      

  3.   

    oyljerry都两颗钻石了,咋不申请大版主了,也好让我提前退休
      

  4.   


    您都有多久没来CSDN了,自从上次您的一篇自传之后,就很少露面,都想死俺们了。
      

  5.   

    你怎么发送数据的呢?
    成功send结束,并不意味着数据成功的发送到对方了
      

  6.   

    退休贴啊
     SendFile(hSocket,"C:\\a.dat")
     shutdown(hSocket,BOTH);  //为什么发送了就关闭?你客户端单独开线程接收服务器发来的文件?
    如果是就可以(但是等于服务器提前就知道你的地址,客户端变成服务器了)
    不是的话,你关闭了,服务器你以发送的socket回复,回复给谁呢?
     
      

  7.   


    这是服务器的代码片段,服务器中的MyHandler是处理函数,服务器把接受的socket交给MyHandler处理。
      

  8.   

    有看TransmitFile()函数的返回值是什么吗?
      

  9.   

    ,
    没太注意TransmitFile这个函数提拉米苏&Eleven都是太熟的面孔了,钦佩
      

  10.   

    我以前玩Socket通信,大文件都是自己CFile open出来,而且根据自定义通信协议分段发送,保证每次发送量。楼主是用什么通信的,怎么一大个文件,就能直接发送?这是什么类库啊?
      

  11.   

    TransmitFile 在2000系统以上都有这个API,可以直接传送文件。
      

  12.   

    TransmitFile 这个函数还真是没用过。
      

  13.   

    问题已解决,仔细查看了相关资料发现,原来SOCKET的“优雅关闭”不只是发送端的事情,如果对端不支持,还是会立即关闭的。这次程序中的对端正是一个单片机设备,应该是对SOCKET协议支持不完全,所以当发送端发出关闭信号时,立即关闭了连接。