System.Net、System.Net.Sockets 封裝網路通訊類別與方法。
| 術語 | 說明 |
|---|---|
| 同步 | 發送方不等回應直接發送下一個封包 |
| 非同步 | 發送方發送後等待接收方回應才發送下一個 |
| 阻塞 | 網路呼叫未完成前持續等待 (如 ReadLine 無資料時阻塞) |
| 非阻塞 | 無論成功與否立即返回 |
Windows 網路開發最常用:非同步非阻塞。C/S 架構即採此模式。.NET 已封裝底層機制,開發者無需深究原理。
TcpListener tcpListener = new TcpListener(1234);
tcpListener.Start();
Socket socketForClient = tcpListener.AcceptSocket();
if (socketForClient.Connected)
{
while (true)
{
NetworkStream ns = new NetworkStream(socketForClient);
StreamReader sr = new StreamReader(ns);
string msg = sr.ReadLine();
ListBox1.Items.Add("收到用戶端:" + msg);
StreamWriter sw = new StreamWriter(ns);
if (textBox1.Text != "")
{
sw.WriteLine(textBox1.Text);
sw.Flush();
}
}
}
networkStream.Close(); streamReader.Close(); streamWriter.Close();
thread.Abort(); tcpListener.Stop();
socketForClient.Shutdown(SocketShutdown.Both);
socketForClient.Close();