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

文章主要介绍了VB.NET文件传输,利用socket来实现文件的网络传输和接收功能,详细的代码让你体
首页 新闻资讯 行业资讯 利用socket完成VB.NET文件传输案例剖析

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

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

VB.NET文件传输代码:

复制

发送端PublicClassForm1  InheritsSystem.Windows.Forms.Form  PrivateSubButton1_Click(ByValsenderAsSystem.Object,  ByValeAsSystem.EventArgs)HandlesButton1.Click  DimsendsocketAsNewNet.Sockets.Socket  (Net.Sockets.AddressFamily.InterNetwork,  Net.Sockets.SocketType.Stream,Net.Sockets.ProtocolType.Tcp)  ''实例化socket  DimipendpiontAsNewNet.IPEndPoint  (Net.IPAddress.Parse("192.168.0.1"),8888)''建立终结点  ''OpenFileDialog1.ShowDialog()  DimfsAsNewIO.FileStream("c:p.doc",  IO.FileMode.OpenOrCreate,IO.FileAccess.Read)''要传输的文件  Dimfssize(fs.Length-1)AsByte  DimstrreadAsNewIO.BinaryReader(fs)''流处理要传输的文件  ''fs.Read(fssize,0,fssize.Length-1)  strread.Read(fssize,0,fssize.Length-1)  sendsocket.Connect(ipendpiont)''连接远程计算机  sendsocket.Send(fssize)''发送文件  Label1.Text=fs.Length()  fs.Close()  sendsocket.Shutdown(Net.Sockets.SocketShutdown.Send)  ''关闭发送连接  sendsocket.Close()''关闭本机socket  EndSub  EndClass  接收端PublicClassForm1  InheritsSystem.Windows.Forms.Form  DimreceivesocketAsNewNet.Sockets.Socket  (Net.Sockets.AddressFamily.InterNetwork,  Net.Sockets.SocketType.Stream,  Net.Sockets.ProtocolType.Tcp)  PrivateSubForm1_Load(ByValsenderAsSystem.Object,  ByValeAsSystem.EventArgs)HandlesMyBase.Load  DimhostipendpiontAsNewNet.IPEndPoint  (Net.IPAddress.Parse("192.168.0.1"),8888)  receivesocket.Bind(hostipendpiont)  ''建立远程计算机的的socket  receivesocket.Listen(2)''监听socket  EndSub   PrivateSubButton1_Click(ByValsenderAsObject,  ByValeAsSystem.EventArgs)HandlesButton1.Click  DimrecfsAsNewIO.FileStream("p.doc",  IO.FileMode.OpenOrCreate)  ''接收数据并将其保存到一个新的文件中  Dimrecbyte(229888)AsByte  DimhostsocketAsNet.Sockets.Socket=  receivesocket.Accept()  ''同意和发送端计算机建立连接  DimnewfilestrAsNewIO.BinaryWriter(recfs)''流写  hostsocket.Receive(recbyte)  ''recfs.Write(recbyte,0,recbyte.Length-1)  newfilestr.Write(recbyte,0,recbyte.Length-1)  recfs.Close()  hostsocket.Shutdown(Net.Sockets.SocketShutdown.Receive)  hostsocket.Close()  EndSub  EndClass
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

  • 12.

  • 13.

  • 14.

  • 15.

  • 16.

  • 17.

  • 18.

  • 19.

  • 20.

  • 21.

  • 22.

  • 23.

  • 24.

  • 25.

  • 26.

  • 27.

  • 28.

  • 29.

  • 30.

  • 31.

  • 32.

  • 33.

  • 34.

  • 35.

  • 36.

  • 37.

  • 38.

  • 39.

  • 40.

  • 41.

  • 42.

  • 43.

  • 44.

  • 45.

  • 46.

  • 47.

  • 48.

  • 49.

  • 50.

  • 51.

  • 52.

  • 53.

  • 54.

  • 55.

  • 56.

  • 57.

  • 58.

  • 59.

通过上面的简单语句我们就完成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新窗体

13    2009-10-27 16:52:41    VB.NET文件传输