利用socket完成VB.NET文件传输案例剖析

开发 后端
文章主要介绍了VB.NET文件传输,利用socket来实现文件的网络传输和接收功能,详细的代码让你体会利用socket来完成文件传输的好处。

提到文件传输不知道的人会问怎么传输啊?可是这个问题对于我们程序员来说就不是一个很陌生的话题,大家都知道socket.socket是网络套接字,使用它我们可以很方便的实现网络的数据传输。在.net中提供了socket类来帮助开发者调用socket的使用,从而避免了调用socket的动态库来实现socket的麻烦。下面我们就来看一个简单的例子,从这个简单的例子来看看.net中的socket类实现socket是多么的方便。

VB.NET文件传输编程思路:在这个简单的例子中我们将通过socket来实现文件的网络传输和接收功能。要实现这两个功能我们需要通过vs.net建立两个实例来完成。一个发送端,一个接收端。由于文中已经给出了详细的注释这里就不罗嗦了。

VB.NET文件传输代码:

  1. 发送端PublicClassForm1  
  2. InheritsSystem.Windows.Forms.Form  
  3. PrivateSubButton1_Click(ByValsenderAsSystem.Object,  
  4. ByValeAsSystem.EventArgs)HandlesButton1.Click  
  5. DimsendsocketAsNewNet.Sockets.Socket  
  6. (Net.Sockets.AddressFamily.InterNetwork,  
  7. Net.Sockets.SocketType.Stream,Net.Sockets.ProtocolType.Tcp)  
  8. ''实例化socket  
  9. DimipendpiontAsNewNet.IPEndPoint  
  10. (Net.IPAddress.Parse("192.168.0.1"),8888)''建立终结点  
  11. ''OpenFileDialog1.ShowDialog()  
  12. DimfsAsNewIO.FileStream("c:p.doc",  
  13. IO.FileMode.OpenOrCreate,IO.FileAccess.Read)''要传输的文件  
  14. Dimfssize(fs.Length-1)AsByte  
  15. DimstrreadAsNewIO.BinaryReader(fs)''流处理要传输的文件  
  16. ''fs.Read(fssize,0,fssize.Length-1)  
  17. strread.Read(fssize,0,fssize.Length-1)  
  18. sendsocket.Connect(ipendpiont)''连接远程计算机  
  19. sendsocket.Send(fssize)''发送文件  
  20. Label1.Text=fs.Length()  
  21. fs.Close()  
  22. sendsocket.Shutdown(Net.Sockets.SocketShutdown.Send)  
  23. ''关闭发送连接  
  24. sendsocket.Close()''关闭本机socket  
  25. EndSub  
  26. EndClass  
  27. 接收端PublicClassForm1  
  28. InheritsSystem.Windows.Forms.Form  
  29. DimreceivesocketAsNewNet.Sockets.Socket  
  30. (Net.Sockets.AddressFamily.InterNetwork,  
  31. Net.Sockets.SocketType.Stream,  
  32. Net.Sockets.ProtocolType.Tcp)  
  33. PrivateSubForm1_Load(ByValsenderAsSystem.Object,  
  34. ByValeAsSystem.EventArgs)HandlesMyBase.Load  
  35. DimhostipendpiontAsNewNet.IPEndPoint  
  36. (Net.IPAddress.Parse("192.168.0.1"),8888)  
  37. receivesocket.Bind(hostipendpiont)  
  38. ''建立远程计算机的的socket  
  39. receivesocket.Listen(2)''监听socket  
  40. EndSub  
  41.  
  42. PrivateSubButton1_Click(ByValsenderAsObject,  
  43. ByValeAsSystem.EventArgs)HandlesButton1.Click  
  44. DimrecfsAsNewIO.FileStream("p.doc",  
  45. IO.FileMode.OpenOrCreate)  
  46. ''接收数据并将其保存到一个新的文件中  
  47. Dimrecbyte(229888)AsByte  
  48. DimhostsocketAsNet.Sockets.Socket=  
  49. receivesocket.Accept()  
  50. ''同意和发送端计算机建立连接  
  51. DimnewfilestrAsNewIO.BinaryWriter(recfs)''流写  
  52. hostsocket.Receive(recbyte)  
  53. ''recfs.Write(recbyte,0,recbyte.Length-1)  
  54. newfilestr.Write(recbyte,0,recbyte.Length-1)  
  55. recfs.Close()  
  56. hostsocket.Shutdown(Net.Sockets.SocketShutdown.Receive)  
  57. hostsocket.Close()  
  58. EndSub  
  59. EndClass 

通过上面的简单语句我们就完成VB.NET文件传输,但是这里有一点要注意,此代码只可以接受文本文件和图片文件,对于其他文件的发送和接收将导致编码错误,如果你不相信你可以传输一个mp3文件,再在播放器中打开接收到的mp3文件,你会听到只有开头不到2秒的音乐可以播放。如果想解决这个问题你需要使用,net中的tcp/ip类或udp类来实现,当然调用底层的socket动态库也可以解决这个问题。

【编辑推荐】

  1. 实例讲述VB.NET使用Log4Net
  2. 三分钟学会VB.NET转换形态
  3. VB.NET获取硬盘信息四大法宝
  4. 讲述VB.NET调用Excel的好处
  5. 简单例子概述VB.NET新窗体
责任编辑:田树 来源: 博客
相关推荐

2009-10-28 11:27:34

VB.NET资源文件

2009-10-27 15:49:11

VB.NET分辩率

2009-10-23 13:14:38

2009-10-21 16:00:26

VB.NET CASE

2009-10-29 14:02:24

VB和VB.NET比较

2009-11-02 10:53:34

VB.NET INI文

2009-11-02 16:22:16

VB.NET面向对象

2009-10-13 15:09:19

VB.NET使用Tre

2009-10-29 16:46:32

VB.NET语言

2009-11-10 14:30:33

VB.NET多窗体

2009-10-28 10:15:48

VB.NET框架类库

2009-10-12 16:51:28

VB.NET使用Ora

2010-01-14 14:21:07

2010-01-22 15:37:02

VB.NET监控类

2009-10-29 11:41:27

VB.NET写Obje

2010-01-21 12:55:08

VB.NET对象序列

2010-01-12 11:47:09

VB.NET可选参数

2009-10-15 17:50:48

VB.NET调用API

2009-10-23 14:58:05

VB.NET传输表空间

2009-10-29 14:50:22

VB.NET扩展名分组
点赞
收藏

51CTO技术栈公众号