Transmit File使用
来源:互联网 发布:qq三国卡79js最高配置 编辑:程序博客网 时间:2024/06/06 16:27
01
BOOL
TransmitFile(
02
SOCKET hSocket,
03
HANDLE
hFile,
04
DWORD
nNumberOfBytesToWrite,
05
DWORD
nNumberOfBytesPerSend,
06
LPOVERLAPPED lpOverlapped,
07
LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers,
08
DWORD
dwFlags
09
);
10
参数:
11
hSocket
12
面向连接的SOCKET句柄。
13
hFile
14
已打开的文件句柄
15
nNumberOfBytesToWrite
16
要传送的字节数。0值表示传送整个文件。
17
nNumberOfBytesPerSend
18
每次传送的数据块的大小。0值表示使用SOCKET LAYER的默认值。
19
lpOverlapped
20
指向OVERLAPPED结构的指针。NULL值表示不开启overlapped I/O模式。
21
lpTransmitBuffers
22
指向TRANSMIT_FILE_BUFFERS结构指针。NULL值表示仅仅传输文件。
23
dwFlags
24
有三个值可选TF_DISCONNECT TF_REUSE_SOCKET TF_WRITE_BEHIND
25
给出接收端的代码:
26
SOCKET socketListen = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
27
bind(socketListen,NULL,0);
28
listen(socketListen,SOMAXCONN);
29
SOCKET socketRead = accept(socketListen,NULL,0);
30
char
sz[1000000];
31
while
(
true
)
32
{
33
if
(recv(socketRead,sz,
strlen
(sz))==SOCKET_ERROR )
34
break
;
35
//写入文件
36
}
37
发送端代码
38
connect...
39
TransmitFile(hSocket,hFile,0,0,0,NULL,TF_DISCONNECT );
40
//使用例子
41
//发送端
42
//发送文件
43
HANDLE
hFile = CreateFile(lpszFilePath,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
44
TransmitFile(m_Socket,hFile,0,TRANS_FILE_LENGTH,NULL,NULL,TF_DISCONNECT);
45
CloseHandle(hFile);
46
//接收端
47
ULONG
lReadSize = 0;
48
char
szInfo[TRANS_FILE_LENGTH] = {0};
49
HANDLE
hFile = CreateFile(lpszFilePah,GENERIC_WRITE,FILE_SHARE_WRITE,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
50
while
(hFile != INVALID_HANDLE_VALUE)
51
{
52
int
iSize = recv(m_Socket,szInfo,TRANS_FILE_LENGTH,0);
53
if
(iSize==SOCKET_ERROR||iSize==0)
54
{
55
CloseHandle(hFile);
56
break
;
57
}
58
else
if
(iSize<TRANS_FILE_LENGTH)
59
{
60
WriteFile(hFile,szInfo,iSize,&lReadSize,NULL);
61
CloseHandle(hFile);
62
break
;
63
}
64
//写入文件
65
WriteFile(hFile,szInfo,iSize,&lReadSize,NULL);
66
}
- Transmit File使用
- socket file transmit
- Transmit
- A simple Java program which implement remote file transmit (Multi-thread)
- link layer transmit
- ble之Transmit window offset and Transmit window size
- PING Transmit Failed General Failure
- 【Hautoj 1278 Transmit information】+ dfs
- File 使用
- Video Transmit on Linux Using JMF
- convert , transform , transfer , transmit ,transit 的区别
- haut 1278: Transmit information(倍增floyd)@
- java使用file协议
- 使用File类
- FILE指针的使用
- 使用File类
- 客户端控件File使用
- Tag File的使用
- TCP发送文件(转)
- 软件试用的乐趣
- tomcat6.0环境变量配置
- 转-人不成熟的特征
- OCM考试中的物化视图的实现
- Transmit File使用
- linux删除文件后没有释放空间
- 简单Socket编程
- 数据结构总结
- 批处理常用命令
- 线程同步的几种方式
- bos简单打包部署批处理命令
- 总结(一)毕业实习
- 让 ESX 连接上NFS Server