Java網(wǎng)絡(luò)編程

Java網(wǎng)絡(luò)編程

實(shí)現(xiàn)基于TCP協(xié)議的Socket編程

  • 關(guān)鍵步驟如下:1. 兩個(gè)端點(diǎn)進(jìn)行連接。2.打開傳遞信息的輸入/輸出流。3.傳遞數(shù)據(jù)、接收數(shù)據(jù)。4.關(guān)閉連接

認(rèn)識(shí)Soket

  1. Socket概述
    • Java最初是作為網(wǎng)絡(luò)編程語言出現(xiàn)的,它對(duì)網(wǎng)絡(luò)的高度支持,使得客戶端和服務(wù)器端流暢的溝通變成現(xiàn)實(shí)。而在網(wǎng)絡(luò)編程中,使用最多的就是Socket,每一個(gè)實(shí)用的網(wǎng)絡(luò)程序都少不了它的參與。
    • 在計(jì)算機(jī)網(wǎng)絡(luò)編程技術(shù)中,兩個(gè)進(jìn)程或者說兩臺(tái)計(jì)算機(jī)可以通過一個(gè)網(wǎng)絡(luò)通信連接實(shí)現(xiàn)數(shù)據(jù)的交換,這種通信鏈路的端點(diǎn)被稱為“套接字”(英文名稱也就是Socket),Socket是網(wǎng)絡(luò)驅(qū)動(dòng)層提供給應(yīng)用程序的一個(gè)接口或者說一種機(jī)制。
  2. Socket通信原理
    • 對(duì)于編程人員來說,無須了解Socket底層機(jī)制是如何傳送數(shù)據(jù)的,而是直接將數(shù)據(jù)提交給Socket,Socket會(huì)根據(jù)應(yīng)用提供的相關(guān)信息,通過一系列計(jì)算,綁定IP及信息數(shù)據(jù),將數(shù)據(jù)交給驅(qū)動(dòng)程序向網(wǎng)絡(luò)上發(fā)送。
  3. java.net包
    • java.net包中常用的類有Socket、ServerSocket、DatagramPacket、DatagramSocket、InetAddress、URL、URLConnection和URLEncoderdeng
    • 為了監(jiān)聽客戶端的連接請(qǐng)求,可以使用SeverSocket類。Socket類實(shí)現(xiàn)用于網(wǎng)絡(luò)上進(jìn)程間通信的套接字。DatagramSocket類使用UDP協(xié)議實(shí)現(xiàn)客戶端和服務(wù)器套接字。DatagramPacket類使用DatagramSocket類的對(duì)象封裝設(shè)置和收到的數(shù)據(jù)報(bào)。InetAddress類表示Internet地址。在創(chuàng)建數(shù)據(jù)報(bào)報(bào)文和Socket對(duì)象時(shí),可以使用InetAddress類。

基于TCP協(xié)議的Socket編程

  • java.net包的兩個(gè)類的Socket和ServerSocket,分別用來實(shí)現(xiàn)雙向安全連接的客戶端和服務(wù)端,他們是基于TCP協(xié)議進(jìn)行工作的,它的工作過程如同打電話的過程,只有雙方都接通了,才能開始通話。

  • 進(jìn)行網(wǎng)絡(luò)通信時(shí),Socket需要借助數(shù)據(jù)流來完成數(shù)據(jù)的傳遞工作。如果一個(gè)應(yīng)用程序要通過網(wǎng)絡(luò)向另一個(gè)應(yīng)用程序發(fā)送數(shù)據(jù),只要簡(jiǎn)單地創(chuàng)建Socket,然后將數(shù)據(jù)寫入到與該Socket關(guān)聯(lián)的輸出流即可。對(duì)應(yīng)的,接收方的應(yīng)用程序創(chuàng)建Socket,從相關(guān)聯(lián)的輸入流讀取數(shù)據(jù)即可

注意:2個(gè)端點(diǎn)在基于TCP協(xié)議的Socket編程中,經(jīng)常一個(gè)作為客戶端,一個(gè)作為服務(wù)端,也就是遵循client-serve模型

  1. Socket類對(duì)象在客戶端和服務(wù)器之間建立連接??捎肧ocket類的構(gòu)造方法創(chuàng)建套接字,并將此套接字連接至指定的主機(jī)和端口。以下時(shí)與此Socket對(duì)象關(guān)聯(lián)的構(gòu)造方法和一些常用方法。

    • 構(gòu)造方法

      • 第一種構(gòu)造方法以主機(jī)名和端口號(hào)作為參數(shù)來創(chuàng)建一個(gè)Socket對(duì)象。

        Socket s=new Socket(hostName,port);
        //另一種構(gòu)造方法以InetAdress對(duì)象和端口號(hào)作為參數(shù)來創(chuàng)建一個(gè)Socket
        Socket s=new Socket(address,port);
        

Server Socket類

  • ServerSocket對(duì)象等待客戶端建立連接,連接建立以后進(jìn)行通信
  1. 構(gòu)造方法

    • 可用的構(gòu)造方法有兩種。第一種接收端口號(hào)作為參數(shù)創(chuàng)建ServerSocke對(duì)象。

      ServerSocket ss=new ServerSocket(port);
      
    • 另一種接受端口號(hào)和最大隊(duì)列長(zhǎng)度作為參數(shù),隊(duì)列長(zhǎng)度表示系統(tǒng)在拒絕連接前可以擁有的最大客戶端連接數(shù)

      ServerSocket ss=new ServerSocket(port,maxqu);
      
  1. 常用方法
    • Socket類中列出的常用方法也適用于ServerSocket類。此外,ServerSocket類具有accept()方法,此方法用于等待客戶端發(fā)起通信,這樣Socket對(duì)象就可用于進(jìn)一步的數(shù)據(jù)傳輸。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容