要传文件,为什么TransmitFile()函数总是出错?大虾帮忙看看啊

DryFisHH 2004-10-20 01:54:42
WSADATA wsa;
SOCKET sock;
struct sockaddr_in sin;


HANDLE hFile;
DWORD dwSize;


hFile=CreateFile("1.dat",0,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile==NULL)
{
printf("Open file failed");
return 0;
}


if(WSAStartup(0x0202,&wsa)==SOCKET_ERROR)
return 0;
if((sock=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)
return 0;

sin.sin_addr.s_addr=inet_addr(server);
sin.sin_family=AF_INET;
sin.sin_port=htons(12345);

if(connect(sock,(struct sockaddr*)&sin,sizeof(sin))==SOCKET_ERROR)
return 0;
dwSize=GetFileSize(hFile,NULL);

TRANSMIT_FILE_BUFFERS transBuf;
transBuf.Head=(PVOID)&dwSize;
transBuf.HeadLength=4;
transBuf.Tail=NULL;
transBuf.TailLength=0;

TransmitFile(sock,hFile,0,2046,NULL,&transBuf,TF_REUSE_SOCKET);

CloseHandle(hFile);
closesocket(sock);
WSACleanup();

前面一切正常,到了TransmitFile就会返回“拒绝访问”的错误,谁用过这个函数,说说我错在哪里?
...全文
75 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdy119 2004-10-20
  • 打赏
  • 举报
回复
没用过这个函数,TransmitFile 看一下MSDN你的参数设置是不是对的?
还有验证版本时候:
WSADATA wsadata;
ASSERT(WSAStartup(MAKEWORD(2,2),&wsadata)==0);

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧