• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Java平臺的TCP網(wǎng)絡(luò)通信及應(yīng)用研究

      2020-11-25 09:22:12湯小波
      商情 2020年13期
      關(guān)鍵詞:端口號接收數(shù)據(jù)構(gòu)造方法

      湯小波

      【摘要】本文講述了網(wǎng)絡(luò)通信的基本原理及java平臺下網(wǎng)絡(luò)通信技術(shù),并用簡單明了的步驟闡述了java語言實(shí)現(xiàn)過程,旨在指導(dǎo)java平臺的網(wǎng)絡(luò)開發(fā)應(yīng)用。

      【關(guān)鍵字】通信 ServerSocket Socket

      如今,計(jì)算機(jī)網(wǎng)絡(luò)已成為現(xiàn)代社會信息交流的重要鏈路,社會的交流離不開計(jì)算機(jī)網(wǎng)絡(luò)通信,如何實(shí)現(xiàn)其相互通信呢?基于Java的網(wǎng)絡(luò)通信就成為一種重要手段。

      1、網(wǎng)絡(luò)通信協(xié)議及原理

      1.1、網(wǎng)絡(luò)通信協(xié)議

      什么是網(wǎng)絡(luò)通信協(xié)議?實(shí)現(xiàn)計(jì)算機(jī)連接和通信的規(guī)則稱之為網(wǎng)絡(luò)通信協(xié)議。網(wǎng)絡(luò)通信協(xié)議有很多種,目前應(yīng)用最廣泛的有TCP/IP協(xié)議和UDP協(xié)議。在TCP/IP結(jié)構(gòu)中,傳輸層有兩個(gè)重要的高級協(xié)議,分別是UDP和TCP,其中UDP稱為用戶數(shù)據(jù)報(bào)協(xié)議,TCP稱為傳輸控制協(xié)議。

      1.2、TCP通信原理

      TCP協(xié)議是面向連接的通信協(xié)議,即在傳輸數(shù)據(jù)前先在發(fā)送端和接收端建立邏輯連接,然后再傳輸數(shù)據(jù),它提供了兩臺計(jì)算機(jī)之間可靠無差錯的數(shù)據(jù)傳輸。在TCP連接中必須要明確客戶端與服務(wù)器端,由客戶端向服務(wù)器端發(fā)出連接請求,每次連接的創(chuàng)建都需要經(jīng)過“三次握手”。第一次握手,客戶端向服務(wù)器端發(fā)出連接請求,等待服務(wù)器確認(rèn);第二次握手,服務(wù)器端向客戶端回送一個(gè)響應(yīng),通知客戶端收到了連接請求;第三次握手,客戶端再次向服務(wù)器端發(fā)送確認(rèn)信息,確認(rèn)連接。TCP連接的整個(gè)交互過程如圖1所示。

      1.3、IP地址與端口號

      要想使網(wǎng)絡(luò)中的計(jì)算機(jī)能夠進(jìn)行通信,必須為每臺計(jì)算機(jī)指定一個(gè)標(biāo)識號,通過這個(gè)標(biāo)識號來指定接收數(shù)據(jù)的計(jì)算機(jī)或者發(fā)送數(shù)據(jù)的計(jì)算機(jī)。在TCP/IP協(xié)議中,這個(gè)標(biāo)識號就是IP地址廠白可以唯一標(biāo)識一臺計(jì)算機(jī)。

      通過IP地址可以連接到指定計(jì)算機(jī),但如果想訪問目標(biāo)計(jì)算機(jī)中的某個(gè)應(yīng)用程序,還需要指定端口號。在計(jì)算機(jī)中,不同的應(yīng)用程序是通過端口號區(qū)分的。接下來通過一個(gè)圖例來描述IP地址和端口號的作用,如圖2所示:

      2、TCP協(xié)議下的Java通信工具類及實(shí)現(xiàn)原理

      在JavaJDK網(wǎng)絡(luò)通信包中提供了兩個(gè)實(shí)現(xiàn)TCP程序的類,一個(gè)是ServerSocket類,用于表示服務(wù)器端;一個(gè)是Socket類,用于表示客戶端。在通信工具類ServerSocket中提供了多個(gè)構(gòu)造方法,其中的常用構(gòu)造方法為ServerSocket(int pat),使用該構(gòu)造方法在創(chuàng)建ServerSocket對象時(shí),可以將其綁定到一個(gè)指定的端口號上(參數(shù)port就是端口號)。Socket類提供了一個(gè)常用構(gòu)造器Socket(Stringhost,int port),使用該構(gòu)造方法在創(chuàng)建Socket對象時(shí),會根據(jù)參數(shù)去連接在指定地址和端口上運(yùn)行的服務(wù)器程序,其中參數(shù)host接收的是一個(gè)字符串類型的IP地址。此兩通信工具類在計(jì)算機(jī)網(wǎng)絡(luò)通信中的原理如圖3所示:

      在服務(wù)器端和客戶端建立連接之后,要想實(shí)現(xiàn)相互通信,首先由ServerSocket對象監(jiān)聽某臺客戶端的端口號,由該對象的accept()方法接收客戶端的請求,當(dāng)執(zhí)行了accept()方法之后,服務(wù)器端程序會發(fā)生阻塞,直到客戶端發(fā)出連接請求時(shí),accept()方法才會返回一個(gè)Socket對象用于和客戶端實(shí)現(xiàn)通信,程序才能繼續(xù)向下執(zhí)行。兩端相互通信,通過數(shù)據(jù)流來實(shí)現(xiàn),它們分別擁有各自的輸入流Inputstream和輸出流OutStream,通過對象的getinputStream()方法和getOutputStream()來得到相互的輸入與輸出流,通過流的方法來實(shí)現(xiàn)流數(shù)據(jù)的發(fā)送和接收。如圖4所示:

      3、Java語言實(shí)現(xiàn)

      3.1、針對如圖4的服務(wù)器端,實(shí)現(xiàn)過程如下:

      1)創(chuàng)建SenrerSocket對象:

      ServerSocket serverSocket=new ServerSacket(8888);

      2)調(diào)用ServerSocket的accept()方法接收數(shù)據(jù)

      Socket client=server Socket.accept();

      3)獲取客戶端的輸出流

      OutputStream os=client.getOutputStream();

      4)當(dāng)客戶端連接到服務(wù)端時(shí),向客戶端輸出數(shù)據(jù)

      os.write《“XXX歡迎你!").getBytes());

      3.2、針對如圖4的客戶端,實(shí)現(xiàn)過程如下:

      1)創(chuàng)建一個(gè)Socket并連接到給出地址和端口號的計(jì)算機(jī)

      Socket client=new Socket(InetAddress.getLocaiHost(),8888);

      2)得到接收數(shù)據(jù)的流

      InputStream is=client.getlnputStream();

      bytes buff=new byte[1024];//定義1024個(gè)字節(jié)數(shù)組的緩沖區(qū)

      3)將數(shù)據(jù)讀到緩沖區(qū)中

      int len=is.read(buf);

      4、結(jié)語

      通過上述分析,我們研究了網(wǎng)絡(luò)通信原理及在Java中如何實(shí)現(xiàn)網(wǎng)絡(luò)通信的基本技術(shù)。在此基礎(chǔ)之上就可以編寫出我們所需要的各種網(wǎng)絡(luò)通信程序。

      猜你喜歡
      端口號接收數(shù)據(jù)構(gòu)造方法
      DC-DC變換器分層級構(gòu)造方法
      沖激噪聲背景下基于幅度預(yù)處理的測向新方法*
      在Docker容器中安裝應(yīng)用程序
      低復(fù)雜度多輸入多輸出雷達(dá)目標(biāo)角度估計(jì)方法
      淺談以java為基礎(chǔ)的Socket通信簡介及實(shí)現(xiàn)
      青春歲月(2017年5期)2017-04-20 18:34:23
      《夢溪筆談》“甲子納音”構(gòu)造方法的數(shù)學(xué)分析
      幾乎最佳屏蔽二進(jìn)序列偶構(gòu)造方法
      單片機(jī)模擬串口數(shù)據(jù)接收程序的實(shí)現(xiàn)及優(yōu)化
      Winsock編程在《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》教學(xué)中的應(yīng)用
      基于Android系統(tǒng)的互動展示APP的研究與設(shè)計(jì)
      岳池县| 广东省| 定襄县| 合作市| 武胜县| 密云县| 河北区| 昌图县| 霍林郭勒市| 乡宁县| 巴中市| 罗定市| 天等县| 扎兰屯市| 北京市| 陆丰市| 汝南县| 青铜峡市| 绥化市| 东宁县| 新巴尔虎左旗| 郑州市| 桐乡市| 荔浦县| 江北区| 肇州县| 凤阳县| 萨迦县| 卢龙县| 明水县| 克拉玛依市| 上栗县| 清徐县| 建德市| 巴青县| 涞水县| 乌拉特中旗| 股票| 治多县| 犍为县| 亳州市|