● 伺服端應用程式
System.Net.Sockets.Socket 類別 |
System.Net.Sockets.TcpListener 類別 |
Socket (IPEndPoint) Bind Listen Accept Receive / ReceiveFrom Send / SendTo (Shutdown) Close |
TcpListener |
<====== Socket 類別 ======>
例外錯誤
SocketException:參數 AddressFamily、SocketType、ProtocolType 組合所產生的無效通訊端。
Imports System.Net.Sockets ... Try Dim srvSocket As New Socket( _ AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) ... Catch ex As SocketException '參數 AddressFamily、SocketType、ProtocolType 組合所產生的無效通訊端 ... End Try |
Imports System.Net ... Try Dim srvIP As IPAddress = IPAddress.Parse("127.0.0.1") '以DNS名稱代替IP位址 Dim srvIP As IPAddress = Dns.Resolve("localhost").AddressList(0) Dim srvHost As New IPEndPoint(srvIP, 80) '以GetHostName方法取得本機電腦的主機名稱 Dim srvIP As IPAddress = Dns.Resolve(Dns.GetHostName).AddressList(0) ... Catch ex As Argumentexception '參數 EndPoint 為 Nothing ... End Try |
Bind 方法:
例外錯誤
System.ArgumentNullException:參數 EndPoint 為 Nothing。
System.Net.Sockets.SocketException:存取 Socket 時發生作業系統錯誤。
System.ObjectDisposedException:Socket 已關閉。
System.Security.SecurityException:沒有權限建立 Socket。
Listen 方法:參數為設定伺服器最大用戶端連結數,可設定int.MaxValue。
例外錯誤
System.Net.Sockets.SocketException:存取 Socket 時發生作業系統錯誤。
System.ObjectDisposedException:Socket 已關閉。
Imports System.Net Imports System.Net.Sockets ... Try Dim srvSocket As New Socket( _ AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) Dim srvIP As IPAddress = IPAddress.Parse("127.0.0.1") Dim srvHost As New IPEndPoint(srvIP, 80) srvSocket.Bind(srvHost) srvSocket.Listen(10) ... Catch ex As SocketException ... End Try |
Accept 方法:接受用戶端的連線請求,傳回值為 Socket 物件。
例外錯誤
System.Net.Sockets.SocketException:存取 Socket 時發生作業系統錯誤。
System.ObjectDisposedException:Socket 已關閉。
System.InvalidOperationException:在執行 Accept 方法之前須先執行 Bind 與 Listen 方法。
傳送資料
Send 方法:
SendTo 方法:
SendFile 方法:
接收資料
Receive 方法:
ReceiveFrom 方法:
ReceiveMessageFrom 方法:
Shutdown 方法:為避免伺服端應用程式在關閉之前仍在傳送或接收資料而使用,來暫停伺服端 Socket 上的傳送和接收作業。
參數
SocketShutdown.Send:暫停傳送作業。
SocketShutdown.Receive:暫停接收作業。
SocketShutdown.Both:同時暫停傳送和接收作業。
例外錯誤
System.Net.Sockets.SocketException:存取 Socket 時發生作業系統錯誤。
System.ObjectDisposedException:Socket 已關閉。
Close 方法:關閉伺服端 Socket。
... srvSocket.Shutdown(SocketShutdown.Both) srvSocket.Close(10) ... If srvSocket.Connected Then ... End If |
<====== TcpListener 類別 ======>
例外錯誤
System.ArgumentOutOfRangeException:參數 port 不介於 MinPort 和 MaxPort 之間。
System.ArgumentNullException:參數 localEP 或 localaddr 為 Nothing。
Imports System.Net Imports System.Net.Sockets ... Try '僅設定伺服端的通訊埠 Dim tcpListener As New TcpListener(80) '僅設定伺服端的IP位址與通訊埠 Dim srvIP As IPAddress = Dns.Resolve("localhost").AddressList(0) Dim tcpListener As New TcpListener(srvIP, 80) ... Catch ex As ArgumentException ... End Try |
Start 方法:
例外錯誤
System.Net.Sockets.SocketException:開啟網路通訊端時發生錯誤。
Imports System.Net.Sockets ... Try Dim tcpListener As New TcpListener(80) tcpListener.Start() ... Catch ex As SocketException
... End Try |
AcceptSocket 方法:接受用戶端的連線請求,傳回值為 Socket 物件。
例外錯誤
System.Net.Sockets.SocketException:存取 Socket 時發生作業系統錯誤。
System.ObjectDisposedException:Socket 已關閉。
System.InvalidOperationException:在執行 Accept 方法之前須先執行 Bind 與 Listen 方法。
AcceptTcpClient 方法:傳回值為 TcpClient物件,以處理用戶端連線、並傳送和接收資料之用。
例外錯誤
System.Net.Sockets.SocketException:存取 Socket 時發生作業系統錯誤。
System.InvalidOperationException:尚未執行 TcpListener 的 Start 方法。
傳送資料
Write 方法:
WriteByte 方法:
接收資料
Read 方法:
ReadByte 方法:
Stop 方法:關閉伺服端服務。
例外錯誤
System.Net.Sockets.SocketException:關閉網路通訊端時發生錯誤。
Imports System.Net.Sockets ... Try Dim tcpListener As New TcpListener(80) tcpListener.Start() Dim tcpClient as TcpClient = tcpListener.AcceptTcpClient() ... tcpListener.Stop() ... Catch ex As SocketException
... End Try |
留言列表