文件传输流程

1.从CSocket类派生两个子类:CServerSocket和CClientSocket.
声明一个CClientSocket*类套接字 m_pSendSocket用来发送数据
声明一个CServerSocket*类套接字 m_pServerSocket用来监听
      一个CServerSocket*类套接字 m_ServerSocket用来接收数据
分别绑定好端口后,m_pServerSocket开始监听。

2.选择文件。
用CFileDialog类的GetPathName()函数获得选中文件的路径名

3.传送文件。
客户端发送connect()请求,服务器端的OnAccept()函数通知监听套接字关闭当前的接收套接字,并调用Accept()函数返回一个新的接收套接字接受连接。
客户端先发送文件信息:文件路径名和文件大小,再发送文件本身。
服务器端的OnReceive()函数通知套接字缓存中有数据,调用ReceiveData()函数。
在ReceiveData()函数中
若是第一次接收数据,应当调用Receive()函数先获取文件信息,用ReverseFind()得到文件名。再用SHBrowseForFolder(&bInfo)显示一个用于选择文件的对话框,记录目录信息并创建一个同名文件。
客户端的OnReceive()函数再调用SendFileData()发送文件。
服务器端接收文件,直接调用Receive()函数并记录已传送的长度,若长度超过文件大小则完成接收。

4.断开连接
文件传输因其他原因终止,客户端将关闭正在传输的文件,用close()函数关闭套接字,再创建一个新的套接字,并释放缓冲区内存。
传输结束后,服务器端关闭套接字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值