基本信息
源码名称:C# 仿QQ发送文件 含(客户端+服务端源码)
源码大小:0.16M
文件格式:.rar
开发语言:C#
更新时间:2015-09-16
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
namespace Core { public delegate void ReceivedBitmapHandler(Bitmap bitmap); public class TransferHandler { private readonly Socket _client; public event ReceivedBitmapHandler ReceivedBitmap; public TransferHandler(Socket client) { _client = client; } public void BeginReceive() { byte[] buffer = new byte[8]; //由于long占8位字节,所以先获取前8位字节数据 IAsyncResult iar = _client.BeginReceive( buffer, 0, buffer.Length, SocketFlags.None, null, null); if (iar != null) { int len = _client.EndReceive(iar); } const int offset = 0; int length = BitConverter.ToInt32(buffer, offset); //先获取文件长度 ReceiveFile(length); BeginReceive(); //继续接收 } public void ReceiveFile(long filelen) { MemoryStream ms = new MemoryStream(); long count = 0; byte[] buffer = new byte[8192]; while (count != filelen) { int bytesRead = _client.Receive(buffer, buffer.Length, 0); ms.Write(buffer, 0, bytesRead); count = bytesRead; } ReceivedBitmap(new Bitmap(ms)); } public void SendFile(string filename) { FileInfo fi = new FileInfo(filename); byte[] len = BitConverter.GetBytes(fi.Length); //首先把文件长度发送过去 _client.BeginSendFile(filename, len, null, TransmitFileOptions.UseDefaultWorkerThread, new AsyncCallback(SendFileCallback), null); } private void SendFileCallback(IAsyncResult iar) { _client.EndSendFile(iar); } } }