通俗易懂讲解javaSocket编程
前言
網絡上的兩個程序通過一個雙向的通信連接實現數據的交換,這個連接的一端稱為一個socket。建立網絡通信連接至少要一對端口號(socket)。socket本質是編程接口(API),對TCP/IP的封裝, TCP/IP也要提供可供程序員做網絡開發所用的接口,這就是Socket編程接口;HTTP是轎車,提供了封裝 或者顯示數據的具體形式;Socket是發動機,提供了網絡通信的能力。Socket的英文原義是“孔”或“插座”。作為BSD UNIX的進程通信機制,取后一種意思。 通常也稱作"套接字",用于描述IP地址和端口,是一個通信鏈的句柄,可以用來實現不同虛擬機 或不同計算機之間的通信。在Internet上的主機一般運行了多個服務軟件,同時提供幾種服務。 每種服務都打開一個Socket,并綁定到一個端口上,不同的端口對應于不同的服務。 Socket正如其英文原義那樣,像一個多孔插座。一臺主機猶如布滿各種插座的房間, 每個插座有一個編號,有的插座提供220伏交流電, 有的提供110伏交流電,有的則提供有線電視節目??蛻糗浖⒉孱^插到不同編號的插座,就可以得到不同的服務。--摘自百度百科?
Socket編程
一、網絡編程基礎
HTTP協議是應用層的協議,應用層協議還有FTP文件傳輸協議等
Socket是傳輸層的技術,包含了UDP和TCP兩種傳輸方式。
Java中,應用層使用URL和URLConnection完成HTTP協議和Socket流的封裝。
1、 兩臺計算機間通信需要以下三個條件
IP地址、協議、端口號
2、TCP/IP協議
TCP/IP協議是目前世界上應用最為廣泛的協議,是以TCP和IP為基礎的不同層次上多個協議的集合,也可稱為TCP/IP協議簇、或者TCP/IP協議棧
TCP:Transmission Control Protocol 傳輸控制協議
IP:Internet Protocol 互聯網協議
3、TCP/IP五層模型
應用層:HTTP、FTP、SMTP、Telnet等
傳輸層:TCP/IP
網絡層:
數據鏈路層:
物理層:網線、雙絞線、網卡等
注:上層依賴于下層
4、Ip地址
為了實現網絡中計算機之間的通信,每天計算機都必須有一個唯一的標示——IP地址
5、端口
區分一臺主機的多個不同的應用程序,端口號為0-65535,其中0-1023是為系統保留
如:HTTP 80 FTP:21 TELNET:23
IP地址+端口號組成了所謂的socket,socket是網絡上運行的程序之間雙向通信鏈路的終結點,是TCP和UDP的基礎
6、Socket套嵌字
網絡上具有唯一標示的端口組合在一起的才能構成唯一能識別的標識符套接字。
socket原理機制:
通信的兩端都有socket
網絡通信其實就是socket間的通信
數據在兩個socket間通過IO傳輸
關于Socket連接,下面是摘自百度百科,概述的比較明確
TCP編程
1、TCP協議是面向連接的、可靠的、有序的、以字節流的方式發送數據,通過建立三次連接的方式建立連接,形成傳輸數據的通道,在連接中進行大量數據的傳輸,效率會稍低
2、java中基于TCP協議實現網絡通信的類
客戶端的Socket類
服務器端的ServerSocket類
根據連接啟動的方式以及本地套接字要連接的目標,套接字之間的連接過程可以分為三個步驟: 服務器監聽,客戶端請求,連接確認。 (1)服務器監聽:是服務器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態,實時監控網絡狀態。 (2)客戶端請求:是指由客戶端的套接字提出連接請求,要連接的目標是服務器端的套接字。 為此,客戶端的套接字必須首先描述它要連接的服務器的套接字,指出服務器端套接字的地址和端口號, 然后就向服務器端套接字提出連接請求。 (3)連接確認:是指當服務器端套接字監聽到或者說接收到客戶端套接字的連接請求, 它就響應客戶端套接字的請求,建立一個新的線程,把服務器端套接字的描述發給客戶端, 一旦客戶端確認了此描述,連接就建立好了。而服務器端套接字繼續處于監聽狀態, 繼續接收其他客戶端套接字的連接請求。?
總結
以上是生活随笔為你收集整理的通俗易懂讲解javaSocket编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot单元测试报错jav
- 下一篇: verilog 除法器