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

【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字

這篇具有很好參考價值的文章主要介紹了【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

??網(wǎng)絡(luò)編程基礎(chǔ)

??為什么需要網(wǎng)絡(luò)編程?

用戶在瀏覽器中,打開在線視頻網(wǎng)站,如騰訊看視頻,實(shí)質(zhì)是通過網(wǎng)絡(luò),獲取到網(wǎng)絡(luò)上的一個視頻資源。
【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket
與本地打開視頻文件類似,只是視頻文件這個資源的來源是網(wǎng)絡(luò)

相比本地資源來說,網(wǎng)絡(luò)提供了更為豐富的網(wǎng)絡(luò)資源:
【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket
所謂的網(wǎng)絡(luò)資源,其實(shí)就是在網(wǎng)絡(luò)中可以獲取的各種數(shù)據(jù)資源。

而所有的網(wǎng)絡(luò)資源,都是通過網(wǎng)絡(luò)編程來進(jìn)行數(shù)據(jù)傳輸?shù)摹?/p>

??什么是網(wǎng)絡(luò)編程?

網(wǎng)絡(luò)編程,指網(wǎng)絡(luò)上的主機(jī),通過不同的進(jìn)程,以編程的方式實(shí)現(xiàn)網(wǎng)絡(luò)通信(或稱為網(wǎng)絡(luò)數(shù)據(jù)傳輸)。

【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket
當(dāng)然,我們只要滿足進(jìn)程不同就行;所以即便是同一個主機(jī),只要是不同進(jìn)程,基于網(wǎng)絡(luò)來傳輸數(shù)據(jù),也屬于網(wǎng)絡(luò)編程

特殊的情況,對于開發(fā)來說,在條件有限的情況下,一般也都是在一個主機(jī)中運(yùn)行多個進(jìn)程來完成網(wǎng)絡(luò)編程。

但是,我們一定要明確,我們的目的是提供網(wǎng)絡(luò)上不同主機(jī),基于網(wǎng)絡(luò)來傳輸數(shù)據(jù)資源:

  • 進(jìn)程A:編程來獲取網(wǎng)絡(luò)資源

  • 進(jìn)程B:編程來提供網(wǎng)絡(luò)資源

【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket

??網(wǎng)絡(luò)編程中的基本概念

關(guān)于網(wǎng)絡(luò)編程中涉及到的一些基本概念我們有必要了解一下

??發(fā)送端和接收端

在一次網(wǎng)絡(luò)數(shù)據(jù)傳輸時:

發(fā)送端:數(shù)據(jù)的發(fā)送方進(jìn)程,稱為發(fā)送端。發(fā)送端主機(jī)即網(wǎng)絡(luò)通信中的源主機(jī)。
接收端:數(shù)據(jù)的接收方進(jìn)程,稱為接收端。接收端主機(jī)即網(wǎng)絡(luò)通信中的目的主機(jī)。
收發(fā)端:發(fā)送端和接收端兩端,也簡稱為收發(fā)端。

注意:發(fā)送端和接收端只是相對的,只是一次網(wǎng)絡(luò)數(shù)據(jù)傳輸產(chǎn)生數(shù)據(jù)流向后的概念
【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket

??請求和響應(yīng)

一般來說,獲取一個網(wǎng)絡(luò)資源,涉及到兩次網(wǎng)絡(luò)數(shù)據(jù)傳輸:

  • 第一次:請求數(shù)據(jù)的發(fā)送

  • 第二次:響應(yīng)數(shù)據(jù)的發(fā)送。

好比在快餐店點(diǎn)一份炒飯:

  • 先要發(fā)起請求:點(diǎn)一份炒飯

  • 再有快餐店提供的對應(yīng)響應(yīng):提供一份炒飯

【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket

??客戶端和服務(wù)端

服務(wù)端:在常見的網(wǎng)絡(luò)數(shù)據(jù)傳輸場景下,把提供服務(wù)的一方進(jìn)程,稱為服務(wù)端,可以提供對外服務(wù)。

客戶端獲取服務(wù)的一方進(jìn)程,稱為客戶端。

對于服務(wù)內(nèi)容來說,一般是提供以下幾種:

  • 客戶端獲取服務(wù)資源
    【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket

  • 客戶端保存資源在服務(wù)端
    【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket

好比在銀行辦事:

  • 銀行提供取款服務(wù):用戶(客戶端)獲取服務(wù)端資源(銀行替用戶保管的現(xiàn)金)

  • 銀行提供存款服務(wù):用戶(客戶端)保存資源(現(xiàn)金)在銀行(服務(wù)端)

??常見的客戶端服務(wù)端模型

最常見的場景,客戶端是指給用戶使用的程序,服務(wù)端是提供用戶服務(wù)的程序:

  1. 客戶端先發(fā)送請求到服務(wù)端

  2. 服務(wù)端根據(jù)請求數(shù)據(jù),執(zhí)行相應(yīng)的業(yè)務(wù)處理

  3. 服務(wù)端返回響應(yīng):發(fā)送業(yè)務(wù)處理結(jié)果

  4. 客戶端根據(jù)響應(yīng)數(shù)據(jù),展示處理結(jié)果(展示獲取的資源,或提示保存資源的處理結(jié)果)
    【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket

??Socket套接字

??概念

Socket套接字,是由系統(tǒng)提供用于網(wǎng)絡(luò)通信的技術(shù),是基于TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本操作單元?;赟ocket套接字的網(wǎng)絡(luò)程序開發(fā)就是網(wǎng)絡(luò)編程

??分類

Socket套接字主要針對傳輸層協(xié)議劃分為如下三類:

  1. 流套接字:使用傳輸層TCP協(xié)議

TCP,即Transmission Control Protocol(傳輸控制協(xié)議),傳輸層協(xié)議。

以下為TCP的特點(diǎn)(細(xì)節(jié)請關(guān)注博主后續(xù)創(chuàng)作):

  • 有連接
  • 可靠傳輸
  • 面向字節(jié)流
  • 有接收緩沖區(qū),也有發(fā)送緩沖區(qū)
  • 大小不限

對于字節(jié)流來說,可以簡單的理解為,傳輸數(shù)據(jù)是基于IO流,流式數(shù)據(jù)的特征就是在IO流沒有關(guān)閉的情
況下,是無邊界的數(shù)據(jù),可以多次發(fā)送,也可以分開多次接收

  1. 數(shù)據(jù)報套接字:使用傳輸層UDP協(xié)議

UDP,即User Datagram Protocol(用戶數(shù)據(jù)報協(xié)議),傳輸層協(xié)議。

以下為UDP的特點(diǎn)(細(xì)節(jié)請關(guān)注博主后續(xù)創(chuàng)作):

  • 無連接
  • 不可靠傳輸
  • 面向數(shù)據(jù)報
  • 有接收緩沖區(qū),無發(fā)送緩沖區(qū)
  • 大小受限:一次最多傳輸64k

對于數(shù)據(jù)報來說,可以簡單的理解為,傳輸數(shù)據(jù)是一塊一塊的,發(fā)送一塊數(shù)據(jù)假如100個字節(jié),必須一次發(fā)送,接收也必須一次接收100個字節(jié),而不能分100次,每次接收1個字節(jié)。

  1. 原始套接字

原始套接字用于自定義傳輸層協(xié)議,用于讀寫內(nèi)核沒有處理的IP協(xié)議數(shù)據(jù)

關(guān)于原始套接字博主不會詳細(xì)介紹,有興趣的小伙伴可以自己區(qū)了解一下。

??Java數(shù)據(jù)報套接字通信模型

java中使用UDP協(xié)議通信,主要基于 DatagramSocket 類來創(chuàng)建數(shù)據(jù)報套接字,并使用

DatagramPacket 作為發(fā)送或接收的UDP數(shù)據(jù)報。對于一次發(fā)送及接收UDP數(shù)據(jù)報的流程如下:

【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket
以上只是一次發(fā)送端的UDP數(shù)據(jù)報發(fā)送,及接收端的數(shù)據(jù)報接收,并沒有返回的數(shù)據(jù)。也就是只有請求,沒有響應(yīng)。對于一個服務(wù)端來說,重要的是提供多個客戶端的請求處理及響應(yīng),流程如下:
【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket

??Java流套接字通信模型

【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket

??Socket編程注意事項

【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket

  1. 客戶端和服務(wù)端:開發(fā)時,經(jīng)常是基于一個主機(jī)開啟兩個進(jìn)程作為客戶端和服務(wù)端,但真實(shí)的場景,一般都是不同主機(jī)。

  2. 注意目的IP和目的端口號,標(biāo)識了一次數(shù)據(jù)傳輸時要發(fā)送數(shù)據(jù)的終點(diǎn)主機(jī)和進(jìn)程

  3. Socket編程我們是使用流套接字和數(shù)據(jù)報套接字,基于傳輸層的TCP或UDP協(xié)議,但應(yīng)用層協(xié)議,也需要考慮,這塊我們在后續(xù)來說明如何設(shè)計應(yīng)用層協(xié)議。

  4. 關(guān)于端口被占用的問題
    如果一個進(jìn)程A已經(jīng)綁定了一個端口,再啟動一個進(jìn)程B綁定該端口,就會報錯,這種情況也叫端口被占用。對于java進(jìn)程來說,端口被占用的常見報錯信息如下:
    【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket

  • 此時需要檢查進(jìn)程B綁定的是哪個端口,再查看該端口被哪個進(jìn)程占用。以下為通過端口號查進(jìn)程
    的方式:
    在cmd輸入 netstat -ano | findstr 端口號 ,則可以顯示對應(yīng)進(jìn)程的pid。如以下命令顯示了8888進(jìn)程的pid
    【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket
  • 在任務(wù)管理器中,通過pid查找進(jìn)程
    【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字,JavaEE初階,java-ee,網(wǎng)絡(luò),java,開發(fā)語言,UDP,TCP,Socket

解決端口被占用的問題

  • 如果占用端口的進(jìn)程A不需要運(yùn)行,就可以關(guān)閉A后,再啟動需要綁定該端口的進(jìn)程B

  • 如果需要運(yùn)行A進(jìn)程,則可以修改進(jìn)程B的綁定端口,換為其他沒有使用的端口。

?總結(jié)

關(guān)于《【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字簡介》就講解到這兒,感謝大家的支持,歡迎各位留言交流以及批評指正,如果文章對您有幫助或者覺得作者寫的還不錯可以點(diǎn)一下關(guān)注,點(diǎn)贊,收藏支持一下!文章來源地址http://www.zghlxwxcb.cn/news/detail-743576.html

到了這里,關(guān)于【JavaEE初階】 網(wǎng)絡(luò)編程基礎(chǔ)與Socket套接字的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 「網(wǎng)絡(luò)編程」第二講:網(wǎng)絡(luò)編程socket套接字(一)

    「網(wǎng)絡(luò)編程」第二講:網(wǎng)絡(luò)編程socket套接字(一)

    「前言」文章是關(guān)于網(wǎng)絡(luò)編程的socket套接字方面的,下面開始講解! 「歸屬專欄」網(wǎng)絡(luò)編程 「主頁鏈接」個人主頁 「筆者」楓葉先生(fy) 「楓葉先生有點(diǎn)文青病」「每篇一句」 春風(fēng)得意馬蹄疾,一日看盡長安花。 ——孟郊《登科后》 目錄 一、預(yù)備知識 1.1 源IP和目的IP 1.

    2024年02月09日
    瀏覽(87)
  • 【網(wǎng)絡(luò)編程】socket套接字

    【網(wǎng)絡(luò)編程】socket套接字

    如果我們的臺式機(jī)或者筆記本沒有IP地址就無法上網(wǎng),而因?yàn)槊颗_主機(jī)都有IP地址,所以注定了數(shù)據(jù)從一臺主機(jī)傳輸?shù)搅硪慌_主機(jī) 一定有源IP和目的IP 。 所以在報頭中就會包含源IP和目的IP。 而我們把數(shù)據(jù)從一臺主機(jī)傳遞到另一臺主機(jī)并不是目的,真正通信的其實(shí)是應(yīng)用層上的

    2024年02月02日
    瀏覽(95)
  • 網(wǎng)絡(luò)編程套接字(Socket)

    網(wǎng)絡(luò)編程套接字(Socket)

    認(rèn)識IP地址, 端口號, 網(wǎng)絡(luò)字節(jié)序等網(wǎng)絡(luò)編程中的基本概念; 學(xué)習(xí)socket api的基本用法; 能夠?qū)崿F(xiàn)一個簡單的udp客戶端/服務(wù)器; 能夠?qū)崿F(xiàn)一個簡單的tcp客戶端/服務(wù)器(單連接版本, 多進(jìn)程版本, 多線程版本); 理解tcp服務(wù)器建立連接, 發(fā)送數(shù)據(jù), 斷開連接的流程; 通俗易懂地說,源

    2024年01月21日
    瀏覽(106)
  • 網(wǎng)絡(luò)編程—Socket套接字詳解

    網(wǎng)絡(luò)編程—Socket套接字詳解

    目錄 一、網(wǎng)絡(luò)編程 1.1、為什么需要網(wǎng)絡(luò)編程? 1.2、什么是網(wǎng)絡(luò)編程 1.3、發(fā)送端和接收端 ?編輯1.4、請求和響應(yīng) ?編輯1.5、客戶端和服務(wù)端? 二、Socket套接字? 2.1、概念 2.2、分類? 2.2.1、流套接字? 2.2.2、數(shù)據(jù)報套接字? 2.2.3、原始套接字? 2.3、Socket編程注意事項? 1.1、為什

    2024年02月16日
    瀏覽(101)
  • 【網(wǎng)絡(luò)編程】網(wǎng)絡(luò)編程概念,socket套接字,基于UDP和TCP的網(wǎng)絡(luò)編程

    【網(wǎng)絡(luò)編程】網(wǎng)絡(luò)編程概念,socket套接字,基于UDP和TCP的網(wǎng)絡(luò)編程

    前言: 大家好,我是 良辰丫 ,今天我們一起來學(xué)習(xí)網(wǎng)絡(luò)編程,網(wǎng)絡(luò)編程的基本概念,認(rèn)識套接字,UDP與TCP編程.?????? ??個人主頁:良辰針不戳 ??所屬專欄:javaEE初階 ??勵志語句:生活也許會讓我們遍體鱗傷,但最終這些傷口會成為我們一輩子的財富。 ??期待大家三連,關(guān)注

    2023年04月20日
    瀏覽(85)
  • JavaEE-網(wǎng)絡(luò)編程套接字(UDP/TCP)

    JavaEE-網(wǎng)絡(luò)編程套接字(UDP/TCP)

    下面寫一個簡單的UDP客戶端服務(wù)器流程 思路: 對于服務(wù)器端:讀取請求,并解析– 根據(jù)解析出的請求,做出響應(yīng)(這里是一個回顯,)–把響應(yīng)寫回客戶端 對于客戶端:從控制臺讀取用戶輸入的內(nèi)容–從控制臺讀取用戶輸入的內(nèi)容–從控制臺讀取用戶輸入的內(nèi)容–將其顯示在

    2024年02月07日
    瀏覽(91)
  • 網(wǎng)絡(luò)編程『socket套接字 ‖ 簡易UDP網(wǎng)絡(luò)程序』

    網(wǎng)絡(luò)編程『socket套接字 ‖ 簡易UDP網(wǎng)絡(luò)程序』

    ??個人主頁: 北 海 ??所屬專欄: Linux學(xué)習(xí)之旅、神奇的網(wǎng)絡(luò)世界 ??操作環(huán)境: CentOS 7.6 阿里云遠(yuǎn)程服務(wù)器 在當(dāng)今數(shù)字化時代,網(wǎng)絡(luò)通信作為連接世界的橋梁,成為計算機(jī)科學(xué)領(lǐng)域中至關(guān)重要的一部分。理解網(wǎng)絡(luò)編程是每一位程序員必備的技能之一,而掌握套接字編程則

    2024年02月04日
    瀏覽(103)
  • 【JavaEE】網(wǎng)絡(luò)編程之TCP套接字、UDP套接字

    【JavaEE】網(wǎng)絡(luò)編程之TCP套接字、UDP套接字

    目錄 1.網(wǎng)絡(luò)編程的基本概念 1.1為什么需要網(wǎng)絡(luò)編程? 1.2服務(wù)端與用戶端 1.3網(wǎng)絡(luò)編程五元組? 1.4套接字的概念 2.UDP套接字編程 2.1UDP套接字的特點(diǎn) ?2.2UDP套接字API 2.2.1DatagramSocket類 2.2.2DatagramPacket類? 2.2.3基于UDP的回顯程序 2.2.4基于UDP的單詞查詢? 3.TCP套接字編程 3.1TCP套接字的特

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

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

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

    2024年02月11日
    瀏覽(29)
  • 【網(wǎng)絡(luò)通信】socket編程——TCP套接字

    【網(wǎng)絡(luò)通信】socket編程——TCP套接字

    TCP依舊使用代碼來熟悉對應(yīng)的套接字,很多接口都是在udp中使用過的 所以就不會單獨(dú)把他們拿出來作為標(biāo)題了,只會把第一次出現(xiàn)的接口作為標(biāo)題 通過TCP的套接字 ,來把數(shù)據(jù)交付給對方的應(yīng)用層,完成雙方進(jìn)程的通信 在 tcpServer.hpp 中,創(chuàng)建一個命名空間 yzq 用于封裝 在命名

    2024年02月13日
    瀏覽(102)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包