java socket基本理解 聊天室demo

版權聲明:如能幫到你,不勝榮幸ಠᴗಠ https://blog.csdn.net/Ryice/article/details/80007320
項目demo 點擊打開鏈接

TCP三次握手的過程如下:
(1)客戶端發送SYN(SEQ=x)報文給服務器端,進入SYN_SEND狀態。
(2)服務器端收到SYN報文,迴應一個SYN (SEQ=y)ACK(ACK=x+1)報文,進入SYN_RECV狀態。
(3)客戶端收到服務器端的SYN報文,迴應一個ACK(ACK=y+1)報文,進入Established狀態。
TCP四次揮手
(1) 某個應用進程首先調用close,稱該端執行“主動關閉”(active close)。該端的TCP於是發送一個FIN分節,表示數據發送完畢。
(2) 接收到這個FIN的對端執行 “被動關閉”(passive close),這個FIN由TCP確認。
注意:FIN的接收也作爲一個文件結束符(end-of-file)傳遞給接收端應用進程,放在已排隊等候該應用進程接收的任何其他數據之後,因爲,FIN的接收意味着接收端應用進程在相應連接上再無額外數據可接收。
(3) 一段時間後,接收到這個文件結束符的應用進程將調用close關閉它的套接字。這導致它的TCP也發送一個FIN。
(4) 接收這個最終FIN的原發送端TCP(即執行主動關閉的那一端)確認這個FIN。 既然每個方向都需要一個FIN和一個ACK,因此通常需要4個分節。
上面內容摘自百度百科,溫習一下

TCP:面向連接,安全可靠,效率相對低。
Socket通信基於TCP。主要有兩個類SocketServer服務端和Socket客戶端。
/*創建服務器端綁定端口*/
ServerSocket ss = new ServerSocket(8070);
/*創建客戶端必須指定服務器和端口*/
Socket socket = new Socket("localhost",8070);

服務啓動後accept方法 阻塞到有客戶端來連接。 連接後就經過三次握手連接了可以進行通信。

基礎知識需要自己補一下,具體源碼可以下載,直接可以運行。裏面也有註釋

總結:其實socket編程就是tomcat 等容器實現的基礎。瞭解這個過程對學習javaweb很有幫助

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章