需求:
1、伺服器Server:
2、用戶端Client:
3、用戶端發送訊息到伺服器,伺服器接收到訊息後顯示並且發送確認資訊。
伺服器代碼如下所示:
using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.Text;<br />using System.Net;<br />using System.Net.Sockets;</p><p>namespace Lan_Server<br />{<br /> public class server<br /> {<br /> public static void Main()<br /> {<br /> try<br /> {<br /> // 把IP地址轉換為IPAddress的執行個體<br /> IPAddress ipAd = IPAddress.Parse("127.0.0.1");</p><p> // 初始化監聽器, 連接埠為8001<br /> TcpListener myList = new TcpListener(ipAd, 8001);</p><p> // 開始監聽伺服器連接埠<br /> myList.Start();</p><p> // 輸出伺服器啟動資訊<br /> Console.WriteLine("在8001連接埠啟動服務...");<br /> Console.WriteLine("本地節點為:" + myList.LocalEndpoint);<br /> Console.WriteLine("等待串連.....");</p><p> // 等待處理接入串連請求<br /> // 建立立的串連用通訊端s表示<br /> Socket s = myList.AcceptSocket();<br /> Console.WriteLine("串連來自 " + s.RemoteEndPoint);</p><p> // 接收用戶端資訊<br /> byte[] b = new byte[100];<br /> int k = s.Receive(b);<br /> Console.WriteLine("已接收...");<br /> for (int i = 0; i < k; i++)<br /> {<br /> Console.Write(Convert.ToChar(b[i]));<br /> }</p><p> // 處理用戶端請求,給用戶端回應<br /> ASCIIEncoding asen = new ASCIIEncoding();<br /> s.Send(asen.GetBytes("The string was recieved by the server."));<br /> Console.WriteLine("/n已發送回應資訊");<br /> Console.Read();</p><p> // 善後工作,釋放資源<br /> s.Close();<br /> myList.Stop();<br /> }<br /> catch (Exception e)<br /> {<br /> Console.WriteLine("Error..... " + e.StackTrace);<br /> }<br /> }<br /> }<br />}</p><p>
用戶端代碼如下所示:
using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.IO;<br />using System.Net;<br />using System.Text;<br />using System.Net.Sockets;</p><p>namespace Lan_Client<br />{<br /> public class client<br /> {<br /> public static void Main()<br /> {<br /> try<br /> {<br /> // 建立用戶端通訊端<br /> TcpClient tcpclnt = new TcpClient();<br /> Console.WriteLine("串連.....");</p><p> // 串連伺服器<br /> tcpclnt.Connect("127.0.0.1", 8001);<br /> Console.WriteLine("已串連");<br /> Console.Write("請輸入要傳輸的字串 : ");</p><p> // 讀入字串<br /> String str = Console.ReadLine();</p><p> // 得到用戶端的流<br /> Stream stm = tcpclnt.GetStream();</p><p> // 發送字串<br /> ASCIIEncoding asen = new ASCIIEncoding();<br /> byte[] ba = asen.GetBytes(str);<br /> Console.WriteLine("傳輸中.....");<br /> stm.Write(ba, 0, ba.Length);</p><p> // 接收從伺服器返回的資訊<br /> byte[] bb = new byte[100];<br /> int k = stm.Read(bb, 0, 100);</p><p> // 輸出伺服器返回資訊<br /> for (int i = 0; i < k; i++)<br /> {<br /> Console.Write(Convert.ToChar(bb[i]));<br /> }<br /> Console.Read();</p><p> // 關閉用戶端串連<br /> tcpclnt.Close();<br /> }<br /> catch (Exception e)<br /> {<br /> Console.WriteLine("Error..... " + e.StackTrace);<br /> }<br /> }<br /> }<br />}<br />
運行結果如下所示:
缺陷:
(1) 不能即時進行對話
(2) 不能手工進行關閉串連