国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java】--網(wǎng)絡(luò)編程:基于TCP協(xié)議的網(wǎng)絡(luò)通信

這篇具有很好參考價(jià)值的文章主要介紹了【Java】--網(wǎng)絡(luò)編程:基于TCP協(xié)議的網(wǎng)絡(luò)通信。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【Java】–網(wǎng)絡(luò)編程:基于TCP協(xié)議的網(wǎng)絡(luò)通信



一、TCP協(xié)議

1.1 概念

TCP協(xié)議(Transmission Control Protocol),即傳輸控制協(xié)議,是一種面向連接的,可靠的,基于字節(jié)流的傳輸層通信協(xié)議。數(shù)據(jù)大小無(wú)限制。
建立連接的過(guò)程需要三次握手。
斷開(kāi)連接的過(guò)程需要四次揮手。
使用TCP協(xié)議的通信雙方分別為客戶端服務(wù)器端。
客戶端負(fù)責(zé)向服務(wù)器端發(fā)送數(shù)據(jù),服務(wù)器端負(fù)責(zé)接收客戶端的數(shù)據(jù)并給出反饋。兩者地位不相同。

1.2 三次握手

1.2.1 文字描述

使用TCP協(xié)議的通信雙方,建立通信連接需要三次握手,即三個(gè)步驟:

  1. 客戶端向服務(wù)器端發(fā)送 建立連接請(qǐng)求(SYN) 數(shù)據(jù)包。
  2. 服務(wù)器端接收到客戶端的SYN包,發(fā)送 確認(rèn)信息(ACK) 數(shù)據(jù)包,表示收到了客戶端發(fā)來(lái)的數(shù)據(jù)包,同時(shí)發(fā)送SYN,請(qǐng)求與客戶端建立連接。
  3. 客戶端接收到服務(wù)器端發(fā)來(lái)的ACK + SYN數(shù)據(jù)包之后,發(fā)送ACK數(shù)據(jù)包,表示收到了服務(wù)器發(fā)來(lái)的數(shù)據(jù)包。至此,客戶端和服務(wù)器之間建立連接。

1.2.2 畫圖演示

【Java】--網(wǎng)絡(luò)編程:基于TCP協(xié)議的網(wǎng)絡(luò)通信,JavaSE,網(wǎng)絡(luò),tcp/ip,java

1.3 四次揮手

1.3.1 文字描述

使用TCP協(xié)議的通信雙方,斷開(kāi)已經(jīng)建立的連接需要四次揮手,即四個(gè)步驟:

  1. 客戶端向服務(wù)器端發(fā)送 斷開(kāi)連接請(qǐng)求(FIN) 數(shù)據(jù)包。
  2. 服務(wù)器接收到客戶端的FIN數(shù)據(jù)包,先向客戶端發(fā)送ACK數(shù)據(jù)包,表示收到了客戶端發(fā)來(lái)的數(shù)據(jù)包,并準(zhǔn)備斷開(kāi)客戶端的連接。
  3. 服務(wù)器處理好斷開(kāi)連接所需事宜后,向客戶端發(fā)送FIN + ACK數(shù)據(jù)包,表示與客戶端斷開(kāi)連接。
  4. 客戶端接收到服務(wù)器端的FIN + ACK數(shù)據(jù)包,向服務(wù)器端發(fā)送ACK數(shù)據(jù)包,表示收到了服務(wù)器端發(fā)送的數(shù)據(jù)包。至此,客戶端與服務(wù)器端斷開(kāi)連接。

1.3.2 畫圖演示

【Java】--網(wǎng)絡(luò)編程:基于TCP協(xié)議的網(wǎng)絡(luò)通信,JavaSE,網(wǎng)絡(luò),tcp/ip,java


二、基于TCP的Socket網(wǎng)絡(luò)編程

2.1 概念

Socket(套接字)是由操作系統(tǒng)提供的統(tǒng)一網(wǎng)絡(luò)編程接口,是網(wǎng)絡(luò)中的一個(gè)通信節(jié)點(diǎn)。
因?yàn)榛赥CP協(xié)議,在使用Socket進(jìn)行網(wǎng)絡(luò)編程時(shí)需要分別進(jìn)行服務(wù)器端的開(kāi)發(fā)和客戶端的開(kāi)發(fā)。

2.2 服務(wù)器端的開(kāi)發(fā)步驟

2.2.1 文字描述

  1. 創(chuàng)建ServerSocket對(duì)象,并指定端口號(hào)。
ServerSocket listener = new ServerSocket(10086);//指定服務(wù)器端的端口號(hào)
  1. 偵聽(tīng)客戶端的連接,并返回客戶端的套接字。
Socket clientSocket = listener.accept();
//注意:accept()是一個(gè)阻塞方法,在獲得客戶端的套接字之前不會(huì)執(zhí)行后面的代碼。
  1. 與客戶端建立連接后,通過(guò)輸入流來(lái)獲取客戶端的輸出流。
//用于接收客戶端的數(shù)據(jù)
InputStream is = clientSocket.getInputStream();
//用于向客戶端輸出數(shù)據(jù)
OutputStream os = clientSocket.getOutputStream();
//使用轉(zhuǎn)換流將字節(jié)流轉(zhuǎn)成字符流,并規(guī)定讀取和輸出的編碼格式為UTF-8
InputStreamReader isr = new InputStreamReader(is,"UTF-8");
OutputStreamWriter osw = new OutputStreamWriter(os,"UTF-8");
//將字符流轉(zhuǎn)換成字符緩沖流,效率更高
BufferedReader br = new BufferedReaer(isr);
BufferedWriter bw = new BufferedWriter(osw);
  1. 處理數(shù)據(jù)
String data = br.readLine();//讀取一行數(shù)據(jù)
System.out.println("客戶端說(shuō):" + data);
String s = "已接收到數(shù)據(jù)";
bw.write(s);//向客戶端發(fā)送反饋
bw.newLine();//換行
bw.flush();//刷新緩存
  1. 關(guān)閉
listener.close();
clientSocket.close();
is.close();
os.close();
isr.close();
osw.close();
br.close();
bw.close();

2.3 客戶端的開(kāi)發(fā)步驟

2.3.1 文字描述

  1. 創(chuàng)建客戶端套接字對(duì)象,并指定服務(wù)器端的地址和端口號(hào)。
//指定服務(wù)器端的地址和端口號(hào)
Socket ClientSocket = new Socket("10.9.48.155",10086);
  1. 獲取輸出流和輸入流
//用于向服務(wù)器端輸出數(shù)據(jù)
OutputStream os = ClientSocket.getOutputStream();
//用于接收服務(wù)器端的反饋
InputStream is = ClientSocket.getInputStream();
//將字節(jié)流通過(guò)轉(zhuǎn)換流轉(zhuǎn)換成字符流
OutputStreamWriter osw = new OutputStreamWriter(os,"UTF-8");
InpusStreamReader isr = new InputStreamReader(is,"UTF-8");
//將字符流轉(zhuǎn)換成字符緩沖流,效率更高
BufferedWriter bw = new BufferedWriter(osw);
BufferedReader br = new BufferedReader(isr);
  1. 處理數(shù)據(jù)并發(fā)送
String s = "好久不見(jiàn),甚是想你";
bw.write(bw);
bw.newLine();//另起一行,令客戶端知道上一行是需要接收的內(nèi)容
bw.flush();//刷新緩存,零數(shù)據(jù)發(fā)送出去
String feedback = br.readLine();
System.out.println("服務(wù)器回應(yīng)道:" + data);
  1. 關(guān)閉
ClientSocket.close();
os.close();
is.close();
osw.close();
isr.close();
bw.close();
br.close();

總結(jié)

這篇文章講解了什么是網(wǎng)絡(luò)編程,以及在java中如何實(shí)現(xiàn)基于TCP協(xié)議的網(wǎng)絡(luò)編程。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-818201.html

到了這里,關(guān)于【Java】--網(wǎng)絡(luò)編程:基于TCP協(xié)議的網(wǎng)絡(luò)通信的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 網(wǎng)絡(luò)編程——深入理解TCP/IP協(xié)議——OSI模型和TCP/IP模型:構(gòu)建網(wǎng)絡(luò)通信的基石

    網(wǎng)絡(luò)編程——深入理解TCP/IP協(xié)議——OSI模型和TCP/IP模型:構(gòu)建網(wǎng)絡(luò)通信的基石

    TCP/IP協(xié)議,即 傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議 ,是一組用于在計(jì)算機(jī)網(wǎng)絡(luò)中實(shí)現(xiàn)通信的協(xié)議。它由兩個(gè)主要的協(xié)議組成:TCP(傳輸控制協(xié)議)和IP(互聯(lián)網(wǎng)協(xié)議)。TCP負(fù)責(zé)確保數(shù)據(jù)的可靠傳輸,而IP則負(fù)責(zé)路由數(shù)據(jù)包以在網(wǎng)絡(luò)中傳遞。TCP/IP協(xié)議簇還包含其他輔助協(xié)議,如UDP(用戶數(shù)

    2024年02月14日
    瀏覽(33)
  • linux【網(wǎng)絡(luò)編程】TCP協(xié)議通信模擬實(shí)現(xiàn)、日志函數(shù)模擬、守護(hù)進(jìn)程化、TCP協(xié)議通信流程、三次握手與四次揮手

    linux【網(wǎng)絡(luò)編程】TCP協(xié)議通信模擬實(shí)現(xiàn)、日志函數(shù)模擬、守護(hù)進(jìn)程化、TCP協(xié)議通信流程、三次握手與四次揮手

    Tcp通信模擬實(shí)現(xiàn)與Udp通信模擬實(shí)現(xiàn)的區(qū)別不大,一個(gè)是面向字節(jié)流,一個(gè)是面向數(shù)據(jù)報(bào);udp協(xié)議下拿到的數(shù)據(jù)可以直接發(fā)送,tcp協(xié)議下需要?jiǎng)?chuàng)建鏈接,用文件描述符完成數(shù)據(jù)的讀寫 1.1.1 接口認(rèn)識(shí) 1.1.1.1 listen:監(jiān)聽(tīng)socket 1.1.1.2 accept:獲取連接 通信就用accept返回的文件描述符,

    2024年02月06日
    瀏覽(29)
  • Java網(wǎng)絡(luò)編程 - TCP通信

    Java網(wǎng)絡(luò)編程 - TCP通信

    快速入門(一發(fā)一收) TCP協(xié)議回顧 : TCP是一種面向連接,安全、可靠的傳輸數(shù)據(jù)的協(xié)議 傳輸前,采用“三次握手”方式,點(diǎn)對(duì)點(diǎn)通信,是可靠的 在連接中可進(jìn)行大數(shù)據(jù)量的傳輸 TCP通信模式 : 在java中只要是使用java.net.Socket類實(shí)現(xiàn)通信,底層即是使用了TCP協(xié)議 編寫客戶端代碼

    2024年01月19日
    瀏覽(27)
  • 基于UDP/TCP的網(wǎng)絡(luò)通信編程實(shí)現(xiàn)

    基于UDP/TCP的網(wǎng)絡(luò)通信編程實(shí)現(xiàn)

    紅色是心中永不褪色的赤誠(chéng) 操作系統(tǒng)為網(wǎng)絡(luò)編程提供了 Socket api , Socket是基于TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本單元, 基于Socket的網(wǎng)絡(luò)程序開(kāi)發(fā)就是 網(wǎng)絡(luò)編程. 由于直接與應(yīng)用層聯(lián)系的是傳輸層, 所以針對(duì)應(yīng)用層協(xié)議(TCP, UDP), Shocket提供了三種套接字, 分別是 流套接字(使用TCP) , 數(shù)據(jù)報(bào)

    2024年02月08日
    瀏覽(33)
  • 【Java 網(wǎng)絡(luò)編程】網(wǎng)絡(luò)通信原理、TCP、UDP 回顯服務(wù)

    【Java 網(wǎng)絡(luò)編程】網(wǎng)絡(luò)通信原理、TCP、UDP 回顯服務(wù)

    互聯(lián)網(wǎng)從何而來(lái)? 這要追溯到上個(gè)世紀(jì) 50 - 60 年代,當(dāng)時(shí)正逢美蘇爭(zhēng)霸冷戰(zhàn), 核武器 給戰(zhàn)爭(zhēng)雙方提供了足夠的威懾力,想要保全自己,就要保證自己的 反制手段 是有效的。 如何保證能夠反擊: 保存指揮機(jī)構(gòu) 保存核彈頭和發(fā)射井 指揮機(jī)構(gòu)和核彈頭之間的通信鏈路 需要保證

    2023年04月10日
    瀏覽(33)
  • 【Java】網(wǎng)絡(luò)編程與Socket套接字、UDP編程和TCP編程實(shí)現(xiàn)客戶端和服務(wù)端通信

    【Java】網(wǎng)絡(luò)編程與Socket套接字、UDP編程和TCP編程實(shí)現(xiàn)客戶端和服務(wù)端通信

    為什么需要網(wǎng)絡(luò)編程? 現(xiàn)在網(wǎng)絡(luò)普及程序越來(lái)越高,網(wǎng)絡(luò)上保存著我們?nèi)粘I钪行枰母鞣N資源,使用程序通過(guò)網(wǎng)絡(luò)來(lái)獲取這些資源的過(guò)程就需要網(wǎng)絡(luò)編程來(lái)實(shí)現(xiàn)。 什么是網(wǎng)絡(luò)編程? 網(wǎng)絡(luò)編程,指網(wǎng)絡(luò)上的主機(jī),通過(guò)不同的進(jìn)程以程序的方式實(shí)現(xiàn)網(wǎng)絡(luò)通信(網(wǎng)絡(luò)數(shù)據(jù)傳輸)

    2024年02月17日
    瀏覽(91)
  • python基于http的網(wǎng)絡(luò)通信和網(wǎng)站端口暴露;Python網(wǎng)絡(luò)編程之HTTP協(xié)議的python應(yīng)用

    HTTP(Hypertext Transfer Protocol)即超文本傳輸協(xié)議,是Web應(yīng)用程序使用的協(xié)議,在Web瀏覽器和Web服務(wù)器之間傳遞HTML頁(yè)面和數(shù)據(jù)。HTTP是基于TCP/IP協(xié)議來(lái)傳輸數(shù)據(jù)的,是一種無(wú)狀態(tài)的協(xié)議。 關(guān)鍵特點(diǎn): 支持客戶/服務(wù)器模式:Web瀏覽器作為HTTP客戶端通過(guò)URL向HTTP服務(wù)器發(fā)送HTTP請(qǐng)求,

    2024年02月04日
    瀏覽(29)
  • Java【網(wǎng)絡(luò)編程2】使用 TCP 的 Socket API 實(shí)現(xiàn)客戶端服務(wù)器通信(保姆級(jí)教學(xué), 附代碼)

    Java【網(wǎng)絡(luò)編程2】使用 TCP 的 Socket API 實(shí)現(xiàn)客戶端服務(wù)器通信(保姆級(jí)教學(xué), 附代碼)

    ??各位讀者好, 我是小陳, 這是我的個(gè)人主頁(yè) ??小陳還在持續(xù)努力學(xué)習(xí)編程, 努力通過(guò)博客輸出所學(xué)知識(shí) ??如果本篇對(duì)你有幫助, 煩請(qǐng)點(diǎn)贊關(guān)注支持一波, 感激不盡 ?? 希望我的專欄能夠幫助到你: JavaSE基礎(chǔ): 基礎(chǔ)語(yǔ)法, 類和對(duì)象, 封裝繼承多態(tài), 接口, 綜合小練習(xí)圖書管理系統(tǒng)

    2024年02月05日
    瀏覽(33)
  • 「網(wǎng)絡(luò)編程」第二講:網(wǎng)絡(luò)編程socket套接字(三)_ 簡(jiǎn)單TCP網(wǎng)絡(luò)通信程序的實(shí)現(xiàn)

    「網(wǎng)絡(luò)編程」第二講:網(wǎng)絡(luò)編程socket套接字(三)_ 簡(jiǎn)單TCP網(wǎng)絡(luò)通信程序的實(shí)現(xiàn)

    「前言」文章是關(guān)于網(wǎng)絡(luò)編程的socket套接字方面的,上一篇是網(wǎng)絡(luò)編程socket套接字(二),下面開(kāi)始講解!? 「歸屬專欄」網(wǎng)絡(luò)編程 「主頁(yè)鏈接」個(gè)人主頁(yè) 「筆者」楓葉先生(fy) 「楓葉先生有點(diǎn)文青病」「每篇一句」 I?do?not?know?where?to?go,but?I?have?been?on?the?road. 我不知

    2024年02月11日
    瀏覽(29)
  • .NET網(wǎng)絡(luò)編程——TCP通信

    .NET網(wǎng)絡(luò)編程——TCP通信

    ? ? ? ? 就是將不同區(qū)域的電腦連接到一起,組成局域網(wǎng)、城域網(wǎng)或廣域網(wǎng)。把分部在不同地理區(qū)域的計(jì)算機(jī)于專門的外部設(shè)備用通信線路 互聯(lián)成一個(gè)規(guī)模大、功能強(qiáng)的網(wǎng)絡(luò)系統(tǒng),從而使眾多的計(jì)算機(jī)可以方便地互相傳遞信息,共享硬件、軟件、數(shù)據(jù)信息等資源。 ??????

    2024年02月16日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包