【asp源码栏目提醒】:网学会员为需要asp源码的朋友们搜集整理了C# 利用Socket SendFile发送图片(源码)-asp net学习网 - 讲义教程相关资料,希望对各位网友有所帮助!
c.net编程学习网 C 利用Socket.SendFile发送图片
源码 C 利用Socket.SendFile发送图片
源码 内容 C 利用Socket.SendFile发送图片
源码 引言 自 .NET Framework 2.0 版本开始新增了一个SendFile方法此方法可以方便的发送指定路径的文件今天给大家演示一个利用Socket.SendFile方法发送图片的例子希望能给刚刚接触Socket编程的朋友一些帮助效果图 SendFile详细参数 Socket.SendFile 方法 String Byte Byte TransmitFileOptions 使用指定的 TransmitFileOptions 值将文件 fileName 和数据缓冲区发送到连接的 Socket 对象。
注意是连接的Socket对象所以只适用于TCP协议的Socket连接。
参数 fileName 一个String它包含要发送的文件的路径和名称。
此参数可以为 空引用在 Visual Basic 中为 Nothing。
preBuffer 一个 Byte 数组包含发送文件前要发送的数据。
此参数可以为 空引用在 Visual Basic 中为 Nothing。
postBuffer 一个 Byte 数组包含发送文件后要发送的数据。
此参数可以为 空引用在 Visual Basic 中为 Nothing。
flags 一个或多个 TransmitFileOptions 值。
详细请参考Socket.SendFile Send和Receive SendFile /// /// 发送指定文件 /// ///文件路径 public void SendFilestring filename FileInfo fi new FileInfofilename byte len BitConverter.GetBytesfi.Length //首先把文件长度发送过去 _client.BeginSendFilefilename len null TransmitFileOptions.UseDefaultWorkerThread new AsyncCallbackSendFileCallback null private void SendFileCallbackIAsyncResult iar _client.EndSendFileiar ReceiveFile public void BeginReceive byte buffer new byte8 //由于long占8位字节所以先获取前8位字节数据 IAsyncResult iar _client.BeginReceive buffer 0 buffer.Length SocketFlags.None null null int len _client.EndReceiveiar int offset 0 int length BitConverter.ToInt32buffer offset //先获取文件长度 ReceiveFilelength BeginReceive //继续接收 public void ReceiveFilelong filelen MemoryStream ms new MemoryStream int bytesRead 0 long count 0 byte buffer new byte8192 while count filelen bytesRead _client.Receivebuffer buffer.Length 0 ms.Writebuffer 0 bytesRead count bytesRead ReceivedBitmapnew Bitmapms 最后 SendFile方法虽然用起来非常的方便但也有自身的优缺点 优点发送文件时自动创建线程即使发送大文件时也不会影响主线程运行不用担心发送过程的状态文件发送完成时会自动返回。
缺点只能发送指定路径的文件发送过程中得不到已发送的流量所以不能观察其发送的状态。
大家可以根据自己所设计的系统环境采用SendFile方法虽然SendFile的缺点让我们情难以堪但是发送一些小文件还是很方便的比如图片文本文档等等。
附
源码下载 ?? 2011 c.net编程学习网 xml地图