利用socket完成VB.NET文件傳輸案例剖析
作者:佚名
文章主要介紹了VB.NET文件傳輸,利用socket來實現(xiàn)文件的網(wǎng)絡傳輸和接收功能,詳細的代碼讓你體會利用socket來完成文件傳輸?shù)暮锰帯?/div>
提到文件傳輸不知道的人會問怎么傳輸???可是這個問題對于我們程序員來說就不是一個很陌生的話題,大家都知道socket.socket是網(wǎng)絡套接字,使用它我們可以很方便的實現(xiàn)網(wǎng)絡的數(shù)據(jù)傳輸。在.net中提供了socket類來幫助開發(fā)者調用socket的使用,從而避免了調用socket的動態(tài)庫來實現(xiàn)socket的麻煩。下面我們就來看一個簡單的例子,從這個簡單的例子來看看.net中的socket類實現(xiàn)socket是多么的方便。
VB.NET文件傳輸編程思路:在這個簡單的例子中我們將通過socket來實現(xiàn)文件的網(wǎng)絡傳輸和接收功能。要實現(xiàn)這兩個功能我們需要通過vs.net建立兩個實例來完成。一個發(fā)送端,一個接收端。由于文中已經(jīng)給出了詳細的注釋這里就不羅嗦了。
VB.NET文件傳輸代碼:
- 發(fā)送端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)''要傳輸?shù)奈募?
- Dimfssize(fs.Length-1)AsByte
- DimstrreadAsNewIO.BinaryReader(fs)''流處理要傳輸?shù)奈募?
- ''fs.Read(fssize,0,fssize.Length-1)
- strread.Read(fssize,0,fssize.Length-1)
- sendsocket.Connect(ipendpiont)''連接遠程計算機
- sendsocket.Send(fssize)''發(fā)送文件
- Label1.Text=fs.Length()
- fs.Close()
- sendsocket.Shutdown(Net.Sockets.SocketShutdown.Send)
- ''關閉發(fā)送連接
- 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)''監(jiān)聽socket
- EndSub
- PrivateSubButton1_Click(ByValsenderAsObject,
- ByValeAsSystem.EventArgs)HandlesButton1.Click
- DimrecfsAsNewIO.FileStream("p.doc",
- IO.FileMode.OpenOrCreate)
- ''接收數(shù)據(jù)并將其保存到一個新的文件中
- Dimrecbyte(229888)AsByte
- DimhostsocketAsNet.Sockets.Socket=
- receivesocket.Accept()
- ''同意和發(fā)送端計算機建立連接
- 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
通過上面的簡單語句我們就完成VB.NET文件傳輸,但是這里有一點要注意,此代碼只可以接受文本文件和圖片文件,對于其他文件的發(fā)送和接收將導致編碼錯誤,如果你不相信你可以傳輸一個mp3文件,再在播放器中打開接收到的mp3文件,你會聽到只有開頭不到2秒的音樂可以播放。如果想解決這個問題你需要使用,net中的tcp/ip類或udp類來實現(xiàn),當然調用底層的socket動態(tài)庫也可以解決這個問題。
【編輯推薦】
責任編輯:田樹
來源:
博客


相關推薦




