TcpClient和TcpListener 类的使用-编写一个点对点聊天工具(初级入门篇)
TcpClient類和TcpListener類屬于.NET框架下網絡通信中的應用層類,為Socket通信提供了更簡單,對用戶更為友好的接口。應用層類比位于底層的Socket類提供了更高層次的抽象,封裝了套接字的創建,不需要處理連接的細節。
TcpClient類以更高的抽象程度提供TCP服務的基礎,因此許多應用層次上的通信協議,比如FTP傳輸協議、HTTP超文本傳輸協議都直接創建在TcpClient等類之上。TcpClient類直接為客戶端設計,提供了通過網絡連接發送和接收數據的簡單方法;TcpListener類用于服務器端,用來監視TCP端口上客戶端的請求。
1.TcpClient類
要建立TCP連接,應該提供IP地址和端口號。TcpClient類有三種構造函數。
(1)public TcpClient():使用本機默認的IP地址和默認的端口0來創建TCP連接。
(2)public TcpClient(IPEndPoint):IPEndPoint指定在建立遠程連接時所使用的本機IP地址和端口號。
(3)public TcpClient(string,int):初始化TcpClient類的新實例,并連接到指定主機上的制定端口。
需要說明的是,在使用前兩種構造函數的時候,只是實現了TcpClient實例對象與IP地址和Port端口的綁定,要完成連接,還需要顯示地用Connect方法指定與遠程主機的連接。
在網絡數據接收和發送方面,TcpClient類使用NetworkStream網絡流處理技術,使得讀寫數據更加方便直觀,而不需考慮具體傳輸的內容。在使用GetStream方法獲得用于發送和接收數據的網絡流之后,就可以使用標準流讀寫方法Write和Read來發送和接收數據了。
2.TcpListener類
TcpListener類用于監視TCP端口上客戶端的請求,通過綁定本機IP地址和端口(IP地址和端口應與客戶端請求一致)來創建TcpListener對象實例,由Start()方法啟動偵聽;當TcpListener偵聽到客戶端連接后,根據客戶端的請求方式來處理請求,即如果是Socket連接請求,則使用AcceptSocket方法,如果是TcpClient連接請求,則使用AcceptTcpClient方法。最后要關閉使用的連接
tcpclient和socket的區別?
TcpClient是在Socket的基礎上運行的。Socket完全可以涵蓋TcpClient,只不過TcpClient為了簡化一部分Socket的功能。
Socket支持TCP,UDP,IP包,Stream,Dgram等諸多類型
而TcpClient只支持TCP和Stream 實例:?TcpClient和TcpListener 類的使用-編寫一個點對點聊天工具(簡單入門演示,客戶端和服務端都是在本機) 服務器端代碼: class Program{static void Main(string[] args){IPAddress localAddr = IPAddress.Parse("127.0.0.1");//IP地址類,建立一個IP地址對象TcpListener server = new TcpListener(localAddr, 13000);//使用IP和端口建立偵聽器server.Start();//開始偵聽Console.WriteLine("等待一個連接");TcpClient client = server.AcceptTcpClient();//接受一個連接,并創建一個服務器端TcpClientConsole.WriteLine("客戶端已經連接");//創建網絡流相關的讀寫器NetworkStream stream = client.GetStream();StreamReader sr = new StreamReader(stream);StreamWriter sw = new StreamWriter(stream);while (true){Console.WriteLine("客戶端:"+sr.ReadLine());//從客戶端接受數據string msg = Console.ReadLine();sw.WriteLine(msg);//向客戶端發送數據 sw.Flush();}client.Close();}} 客戶端代碼: class Program{static void Main(string[] args){IPAddress serverAddr = IPAddress.Parse("127.0.0.1");//創建一個TcpClientTcpClient client = new TcpClient();//向服務器發送連接請求,需要與服務端的IP和端口一致(節點通信)client.Connect(serverAddr, 13000);//創建流讀寫器NetworkStream stream = client.GetStream();StreamReader sr = new StreamReader(stream);StreamWriter sw = new StreamWriter(stream);while (true){string msg = Console.ReadLine();//向服務器端發送數據 sw.WriteLine(msg);sw.Flush();//從服務器端讀取數據Console.WriteLine("服務器:"+sr.ReadLine());}client.Close();}} 效果展示: 先啟動服務端,再啟動客戶端,客戶端發送數據,服務端接受,然后服務端發送數據數據,客戶端同樣可以接收。往復發送接受,完成點對點聊天通信
轉載于:https://www.cnblogs.com/lqsilly/archive/2013/02/19/2916559.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的TcpClient和TcpListener 类的使用-编写一个点对点聊天工具(初级入门篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1815. 计算两点间的距离
- 下一篇: 实战:使用IPSec保护服务器安全