国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于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ī)之間可靠無差錯(cuò)的數(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ì)
古田县| 耿马| 台南市| 南通市| 陇南市| 福泉市| 玉山县| 偏关县| 正安县| 札达县| 彭阳县| 连江县| 北流市| 丹巴县| 于田县| 岢岚县| 安徽省| 肇州县| 玉山县| 调兵山市| 竹山县| 莆田市| 阜宁县| 松阳县| 疏附县| 钟祥市| 长岭县| 三河市| 陇南市| 韩城市| 安溪县| 纳雍县| 沈阳市| 潢川县| 博客| 平遥县| 辉县市| 同仁县| 定结县| 五寨县| 舟曲县|