等待结帖中...TransmitFile的另类用法? 我们常用它来关闭套接字和传输文件,有没有传输缓冲的例子,我刚试了一下,能用,但不知道性能如何,专请高手来分析一下,如果效率不错的话,microsoft为什么还要使用TransmitPackets?急切等待中... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 提供给TransmitFile的是文件句柄,所以发送文件的读写IO还是要的,因此没有TransmitPackets发送来得效率高。 TRANSMIT_FILE_BUFFERS data; data.Head = buf; data.HeadLength = strlen(buf); data.Tail = buf; data.TailLength = strlen(buf); if(lpfnTransmitFile(s,NULL,0,0,NULL,&data,TF_DISCONNECT) != SOCKET_ERROR) return ;这可以的,也没操作文件的,直接发送缓冲的数据,我在客户端能收到完整的数据.就是不知道与TransmitPacktes的区别. 另外问一下:if(::WSAIoctl(Listen,SIO_GET_EXTENSION_FUNCTION_POINTER,(void*)&GuidTranmitFile,sizeof(GuidTranmitFile), &lpfnTransmitFile,sizeof(lpfnTransmitFile),&dwBytes,NULL,NULL) == SOCKET_ERROR) return;-------------------------------------------------------------------------------------if(::WSAIoctl(Listen,SIO_GET_EXTENSION_FUNCTION_POINTER,(void*)&GuidTranmitPackets,sizeof(GuidTranmitPackets), &lpfnTransmitPackets,sizeof(lpfnTransmitPackets),&dwBytes,NULL,NULL) == SOCKET_ERROR) { DWORD err = ::WSAGetLastError(); //10022 return; }为什么同样的加载方法,第一个成功了,第二个失败,为10022参数错误. 确定GUID值是正确?如果是的话可能是socket版本不够新? GUID是从mswsock.h中拷贝过来的,我装了.NET 2003,mswsock.h已经从原来的4K增加到12K了,原来的mswsock.h里只定义了AcceptEx,TransmitFile和另外一个,但现在已经都定义了,.dll和.lib应该也更新了哟. 浏览器异步可插协议扩展怎么去播放html文件里的视频 一个画图程序内存泄露,高手给看下,附有源码 同一个问题 如何用模板<class>实现一个树类型 求一个使用蓝牙API的示例!!! vc操作word2003的问题 在线等帮我看看下面代码那些错误地方的应该怎么改呀?在线等 如何根据位图句柄得到指向该位图的指针? 求助:关于Socks5客户端的实现 急!!!怎样在一个对话框中调出另一个对话框,并结束自己(基于对话框的程序中)? 要实现在程序中打开一个.TXT的文件,并将其显示在程序的最前端,怎么实现 《VC技术内幕》的第一个程序,编译无法通过,请问问题出在哪里?(菜鸟)
data.Head = buf;
data.HeadLength = strlen(buf);
data.Tail = buf;
data.TailLength = strlen(buf); if(lpfnTransmitFile(s,NULL,0,0,NULL,&data,TF_DISCONNECT) != SOCKET_ERROR)
return ;
这可以的,也没操作文件的,直接发送缓冲的数据,我在客户端能收到完整的数据.
就是不知道与TransmitPacktes的区别.
if(::WSAIoctl(Listen,SIO_GET_EXTENSION_FUNCTION_POINTER,(void*)&GuidTranmitFile,sizeof(GuidTranmitFile),
&lpfnTransmitFile,sizeof(lpfnTransmitFile),&dwBytes,NULL,NULL) == SOCKET_ERROR)
return;
-------------------------------------------------------------------------------------
if(::WSAIoctl(Listen,SIO_GET_EXTENSION_FUNCTION_POINTER,(void*)&GuidTranmitPackets,sizeof(GuidTranmitPackets),
&lpfnTransmitPackets,sizeof(lpfnTransmitPackets),&dwBytes,NULL,NULL) == SOCKET_ERROR)
{
DWORD err = ::WSAGetLastError(); //10022
return;
}
为什么同样的加载方法,第一个成功了,第二个失败,为10022参数错误.