本篇文章的主要開發環境是Visual Studio Visual Studio系列產品一直以來都提供了強大的控件功能然而我們利用這些控件可以編寫出功能強大的應用程序本文主要利用微軟的最新net開發工具為大家展示一個發送與接收端程序的開發過程讓大家對Socket更加熟悉很適合net開發工具的初學者具有一定的實用價值
打開 Visual Studio 在文件 (File) 菜單上單擊新建項目 (New Project) 在新建項目 (New Project) 對話框的模板 (Templates) 窗格中單擊 Windows 應用程序(Windows Application)單擊確定 (OK) 如圖
我們需要創建兩個窗體
一個是發送端(Form
窗體)
另外一個是接收端(Form
窗體)
詳細操作步驟如下
選擇Form
窗體
在Form
窗體中添加如下控件
Label
Label
Label
Button
控件
OpenFileDialog
控件
控件屬性設置如下
Label
屬性Text 已經發送的文件長度:
Label
屬性Text 為空
Label
屬性Text 字節數
Button
屬性Text 發送文件
最終界面效果如下
選擇Form
窗體
在Form
窗體中添加如下控件
Label
Label
TextBox
Button
控件
OpenFileDialog
控件
SaveFileDialog
控件
控件屬性設置如下
Label
屬性Text 已接收的文件
Label
屬性Text 為空
TextBox
屬性Multiline
屬性ScrollBars True
Both
Button
屬性Text 接收文件並保存
最終界面效果如下
好了界面工作已經完成了
接下來我們需要輸入代碼了
選擇Form
窗體
進入代碼編輯器中
首先我們需要進行聲明
Imports System
Net
Sockets
Imports System
Net
Imports System
IO
Public Class Form
Inherits System
Windows
Forms
Form
進入Button
_Click事件中
Private Sub Button
_Click(ByVal sender As System
Object
ByVal e As System
EventArgs) Handles Button
Click
Dim mysocket As New Socket(AddressFamily
InterNetwork
SocketType
Stream
ProtocolType
Tcp)
聲明socket
Dim myipendponit As New IPEndPoint(IPAddress
Parse(
)
)
建立一個終結點
OpenFileDialog
Filter =
文本文件(
txt) *
txt
OpenFileDialog
InitialDirectory =
c:\
If OpenFileDialog
ShowDialog() = DialogResult
OK Then
Dim fs As New IO
FileStream(OpenFileDialog
FileName
_
IO
FileMode
OpenOrCreate
IO
FileAccess
Read)
你所要傳輸的文件
Dim ssize(fs
Length
) As Byte
Dim br As New BinaryReader(fs)
處理要傳輸的文件
br
Read(ssize
ssize
Length
)
mysocket
Connect(myipendponit)
連接到遠程計算機
mysocket
Send(ssize)
發送文件
Label
Text = fs
Length()
fs
Close()
mysocket
Shutdown(Net
Sockets
SocketShutdown
Send)
關閉已發送連接
mysocket
Close()
關閉本機socket
End If
End Sub
進入Form
_Load事件中
Private Sub Form
_Load(ByVal sender As System
Object
ByVal e As System
EventArgs) Handles MyBase
Load
Dim window
As New Form
()
window
Show()
End Sub
選擇Form
窗體
進入代碼編輯器中
首先我們需要進行聲明
Imports System
Net
Sockets
Imports System
Net
Imports System
IO
Public Class Form
Inherits System
Windows
Forms
Form
Dim receivesocket As New Socket(AddressFamily
InterNetwork
SocketType
Stream
ProtocolType
Tcp)
進入Form
_Load事件中
Private Sub Form
_Load(ByVal sender As System
Object
ByVal e As System
EventArgs) Handles MyBase
Load
Dim hostipendpoint As New IPEndPoint(IPAddress
Parse(
)
)
receivesocket
Bind(hostipendpoint)
建立遠程計算機的的socket
receivesocket
Listen(
)
監聽socket
End Sub
進入Button
_Click事件中
Private Sub Button
_Click(ByVal sender As System
Object
ByVal e As System
EventArgs) Handles Button
Click
SaveFileDialog
Filter =
文本文件(
txt) *
txt
SaveFileDialog
FileName =
接收的文件
txt
SaveFileDialog
InitialDirectory =
c:\Mytext
If SaveFileDialog
ShowDialog() = DialogResult
OK Then
Dim fs As New IO
FileStream(SaveFileDialog
FileName
_
IO
FileMode
OpenOrCreate)
接收數據並將其保存到一個新的文件
Dim rebyte(
) As Byte
Dim myhostsocket As Socket = receivesocket
Accept()
發送端計算機建立連接
Dim wr As New BinaryWriter(fs)
流寫
myhostsocket
Receive(rebyte)
wr
Write(rebyte
rebyte
Length
)
fs
Close()
myhostsocket
Shutdown(SocketShutdown
Receive)
myhostsocket
Close()
Label
Text = SaveFileDialog
FileName
讀取已保存的文件
Dim Readw As StreamReader
Readw = File
OpenText(SaveFileDialog
FileName)
設置指針到開始位置
Readw
BaseStream
Seek(
SeekOrigin
Begin)
Readw
BaseStream
Position =
While (Readw
Peek() >
)
TextBox
Text += Readw
ReadLine() & vbCrLf
End While
Readw
Close()
End If
End Sub
好了代碼輸入完畢
接下來我們來運行程序測試一下
程序啟動後會彈出Form
窗體(發送端)和Form
窗體(接收端)
我們選擇Form
窗體(發送端)點擊發送按鈕
隨意選擇一個文本文件即可
看一看效果
如圖
接下來我們需要選擇Form
窗體(接收端)點擊接收文本並保存按鈕圖
這個窗體是利用了TCP協議進行了數據的通信
在傳輸時必須設置同時打開發送
與接收端窗體才能進行數據的傳輸
如圖
通過以上的測試
程序運行成功
我們主要利用了Socket以及TCP文件傳輸的技術進行了數據的發送與接收
希望此程序實例能夠給大家帶來幫助
From:http://tw.wingwit.com/Article/program/net/201311/12737.html