想要向服务端传文件,connect成功以后,执行TransmitFile()函数却出现“在一个非套接字上尝试了一个操作”的错误,为何?if(connect(sock,(struct sockaddr*)&sin,sizeof(sin))==SOCKET_ERROR)
    return 0;TransmitFile(sock,hFile,0,0,NULL,NULL,TF_DISCONNECT);如上,第一句没有任何问题,第二句就出错了

解决方案 »

  1.   

    唉,没有人知道么?书上说这是传送文件很高效的函数啊,难道都用send和recv吗?为什么不试试这个?自己顶
      

  2.   

    http://search.csdn.net/Expert/topic/1164/1164621.xml?temp=.1789514
      

  3.   

    TransmitFile(sock,hFile,0,0,NULL,NULL,TF_DISCONNECT);???
    问题太多:1、最后一个参数应该填0,填这个就算发了,也会断掉导致对方收不了
              2、你的套接字是用重叠io标志创建的?如果不是,呵呵
              3、重叠结构指针和传输缓冲区指针怎么都是null呢,这个也有问题
              4、本函数一般用于服务器向客户端推文件,只在Win2000以上和WinXP上有,用在客户端估计很危险,万一他是98呢
              5、这个函数还可以用来传送普通的数据包,但由于它是从另外的途径,所以效率反而比wsasend稍差