TCP同步與異步


  首先我簡單介紹一下同步TCP編程 與異步TCP編程。

 1 (1)同步:在服務端我們通常用一個TcpListener來監聽一個IP和端口。客戶端來一個請求的連接,在服務端可以用同步的方式來接收,也可以用異步的方式去接收。比如:

TcpListene server = new TcpListener(IPAddress.Parse("127.0.0.1"), port);

TcpClient tc =server.AcceptTcpClient();

  這里就一個同步接收的方式,那為什么說同步呢,因為在這個端口下如果同是來了兩個客戶端請求,第一個連接得到響應,與服務端建立通訊,而第二個請求就會被一直阻塞直到第一個請求完成操作,各個請求之間就好像排個隊,順序執行,這就是同步。

 2 (2)異步呢,就是同時來兩個或者多個請求,服務端就同時響應多個客戶端,同時給他們連接。各個客戶端與服務器的通訊是並行的,一個客戶端不必等另一個客戶端完成操作。通常用這兩個方法來接收一個客戶端請求。

BeginAcceptTcpClient()

EndAcceptTcpClient()

 3 (3)阻塞 調用是指調用結果返回之前,當前線程會被掛起。比如:Console.ReadLine(),如果你不向控制台輸入數據,這個方法就會一直等待,知道你輸入數據后才會向下執行。這個時候當前線程被掛起來了,讓CPU去做其他事情。

 4 (4)非阻塞和阻塞的概念相對應,指在不能立刻得到結果之前,該函數不會阻塞當前線程,而會立刻返回。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM