最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Socket類以及ServerSocket類的實(shí)例講解

 更新時(shí)間:2017年09月21日 08:18:34   作者:半城楓葉半城雨丶  
下面小編就為大家?guī)硪黄赟ocket類以及ServerSocket類的實(shí)例講解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

Socket類

套接字是網(wǎng)絡(luò)連接的端點(diǎn),套接字使應(yīng)用可以從網(wǎng)絡(luò)中讀取數(shù)據(jù),可以向網(wǎng)絡(luò)中寫入數(shù)據(jù)。不同計(jì)算機(jī)上的兩個(gè)應(yīng)用程序可以通過連接發(fā)送或接收字節(jié)流,以此達(dá)到相互通信的目的。

為了從一個(gè)應(yīng)用程序向另一個(gè)應(yīng)用程序發(fā)送消息,需要知道另一個(gè)應(yīng)用程序中套接字的 IP 地址和端口號(hào),在java中,套接字由java.net.Socket 表示。

要?jiǎng)?chuàng)建一個(gè)套接字,可以使用Socket類中眾多構(gòu)造函數(shù)中的一個(gè)。其中一個(gè)構(gòu)造函數(shù)接收兩個(gè)參數(shù):主機(jī)號(hào)和端口號(hào)。

public Socket (String host, int port)

其中參數(shù)host是遠(yuǎn)程主機(jī)的名稱或IP地址,參數(shù)port是連接遠(yuǎn)程應(yīng)用程序的端口號(hào),例如,想要通過80端口連接yahoo.com,可以使用如下語句創(chuàng)建Socket對(duì)象

new Socket ("yahoo.com", 80);

一旦成功創(chuàng)建了Socket類的實(shí)例,就可以使用該實(shí)例發(fā)送或接收字節(jié)流,要發(fā)送字節(jié)流,需要調(diào)用Socket類的getOutputStream() 方法獲取一個(gè)java.io.OutputStream對(duì)象,

要發(fā)送文本到遠(yuǎn)程應(yīng)用程序,通常需要使用返回的OutputStream對(duì)象創(chuàng)建一個(gè)java.io.PrintWriter對(duì)象。若想要從連接的另一端接收字節(jié)流,需要調(diào)用Socket類的getInputStream()

方法,該方法會(huì)返回一個(gè)java.io.InputStream對(duì)象。

下面的代碼創(chuàng)建了一個(gè)套接字,用于與本地Http服務(wù)器進(jìn)行通信,發(fā)送HTTP請(qǐng)求,接收服務(wù)器的相應(yīng)信息,以下代碼創(chuàng)建了一個(gè)StringBuffer對(duì)象來保存信息,并輸出。

Socket socket = new Socket("127.0.0.1", "8080");
OutputStream os = socket.getOutputStream();
boolean autoflush = true;
PrintWriter out = new PrintWriter(
 socket.getOutputStream(), autoflush);

BufferedReader in = new BufferedReader(
 new InputStreamReader(socket.getInputStream()));
//send an HTTP request to the web server
out.println("GET /index.jsp HTTP/1.1");
out.println("Host: localhost:8080");
out.println("Connection Close");
out.println();

//read the response
boolean loop = true;
StringBuffer sb = new StringBuffer(8096);
while (loop) {
   if (in.ready()) {
    int i = 0;
    while (i != -1){
     i = in.read();
     sb.append((char) i);
    }
    loop = flase;
   }
   Thread.currentThread().sleep(50);
  }
System.out.println(sb.toString());
socket.close();

ServerSocket類

Socket類表示一個(gè)客戶端套接字,即,當(dāng)想要連接遠(yuǎn)程服務(wù)器應(yīng)用程序時(shí)創(chuàng)建的套接字。但如果你想要實(shí)現(xiàn)一個(gè)服務(wù)器應(yīng)用程序(例如一個(gè)HTTP服務(wù)器或FTP服務(wù)器),

你需要另一種方法,因?yàn)榉?wù)器必須時(shí)刻待命,它并不知道客戶端應(yīng)用程序會(huì)在什么時(shí)候發(fā)起連接,正因?yàn)槿绱耍枰褂胘ava.net.ServerSocket類。這是服務(wù)器套接字的實(shí)現(xiàn)。

ServerSocket類和Socket類并不相同,服務(wù)器套接字要等待來自客戶端的連接請(qǐng)求,當(dāng)服務(wù)器套接字收到了連接請(qǐng)求后,它會(huì)創(chuàng)建一個(gè)Socket實(shí)例來處理與客戶端的通信。

要?jiǎng)?chuàng)建一個(gè)服務(wù)器套接字,可以使用ServerSocket類提供的4個(gè)構(gòu)造函數(shù)中的任意一個(gè),需要指明IP地址和服務(wù)器套接字偵聽的端口號(hào),典型情況下,IP地址可以為127.0.0.1,

即服務(wù)器套接字會(huì)偵聽本地機(jī)器接收到的連接請(qǐng)求,服務(wù)器套接字偵聽的IP地址稱為綁定地址。服務(wù)器套接字的另一個(gè)重要屬性是backlog,后者表示在服務(wù)器拒絕接收傳入的

請(qǐng)求之前,傳入的連接請(qǐng)求的最大隊(duì)列長(zhǎng)度。

ServerSocket類的其中一個(gè)構(gòu)造函數(shù)的簽名如下:

public ServerSocket (int port, int backLog, InetAddress bindingAddress);

值得注意的是,在這個(gè)構(gòu)造函數(shù)中,參數(shù)綁定地址必須是java.net.InetAddress類的實(shí)例。創(chuàng)建InetAddress對(duì)象的一種簡(jiǎn)單方法是調(diào)用其靜態(tài)方法getByName(),

傳入包含主機(jī)名的字符串,代碼如下所示:

InetAddress.getByName("127.0.0.1");

下面的一行代碼創(chuàng)建了一個(gè)ServerSocket對(duì)象,ServerSocket對(duì)象偵聽本地主機(jī)的8080端口,其backlog值為1;

new ServerSocket(8080, 1, InetAddress.getByName("127.0.01"));

創(chuàng)建了ServerSocket實(shí)例后,可以使其等待傳入的連接請(qǐng)求,該連接請(qǐng)求會(huì)通過服務(wù)器套接字偵聽的端口上綁定地址傳入,這些工作可以通過調(diào)通ServerSocket類的accept方法

完成。只有當(dāng)接收到連接請(qǐng)求后,該方法才會(huì)返回,其返回值是一個(gè)Socket實(shí)例,然后,就可以如上所述使用該Socket對(duì)象與客戶端應(yīng)用程序進(jìn)行字節(jié)流的發(fā)送/接收。

以上這篇基于Socket類以及ServerSocket類的實(shí)例講解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何使用nexus在局域網(wǎng)內(nèi)搭建maven私服及idea的使用

    如何使用nexus在局域網(wǎng)內(nèi)搭建maven私服及idea的使用

    這篇文章主要介紹了如何使用nexus在局域網(wǎng)內(nèi)搭建maven私服及idea的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • MyBatis saveBatch 性能調(diào)優(yōu)的實(shí)現(xiàn)

    MyBatis saveBatch 性能調(diào)優(yōu)的實(shí)現(xiàn)

    本文主要介紹了MyBatis saveBatch 性能調(diào)優(yōu)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • JAVA中對(duì)List進(jìn)行查詢

    JAVA中對(duì)List進(jìn)行查詢

    下面小編就為大家?guī)硪黄趈ava List中進(jìn)行模糊查詢的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-08-08
  • Java數(shù)據(jù)結(jié)構(gòu)順序表用法詳解

    Java數(shù)據(jù)結(jié)構(gòu)順序表用法詳解

    順序表是計(jì)算機(jī)內(nèi)存中以數(shù)組的形式保存的線性表,線性表的順序存儲(chǔ)是指用一組地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)線性表中的各個(gè)元素、使得線性表中在邏輯結(jié)構(gòu)上相鄰的數(shù)據(jù)元素存儲(chǔ)在相鄰的物理存儲(chǔ)單元中,即通過數(shù)據(jù)元素物理存儲(chǔ)的相鄰關(guān)系來反映數(shù)據(jù)元素之間邏輯上的相鄰關(guān)系
    2021-10-10
  • java使用common-httpclient包實(shí)現(xiàn)post請(qǐng)求方法示例

    java使用common-httpclient包實(shí)現(xiàn)post請(qǐng)求方法示例

    這篇文章主要給大家介紹了關(guān)于java使用common-httpclient包實(shí)現(xiàn)post請(qǐng)求的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • JAVA十大排序算法之歸并排序詳解

    JAVA十大排序算法之歸并排序詳解

    這篇文章主要介紹了java中的歸并排序,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Java定義泛型接口和類的方法實(shí)例分析

    Java定義泛型接口和類的方法實(shí)例分析

    這篇文章主要介紹了Java定義泛型接口和類的方法,結(jié)合實(shí)例形式分析了泛型相關(guān)概念、原理及泛型接口與類的定義實(shí)現(xiàn)方法,需要的朋友可以參考下
    2019-08-08
  • JDK1.7 之java.nio.file.Files 讀取文件僅需一行代碼實(shí)現(xiàn)

    JDK1.7 之java.nio.file.Files 讀取文件僅需一行代碼實(shí)現(xiàn)

    下面小編就為大家分享一篇JDK1.7 之java.nio.file.Files 讀取文件僅需一行代碼實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助
    2017-11-11
  • 為何Java8需要引入新的日期與時(shí)間庫(kù)

    為何Java8需要引入新的日期與時(shí)間庫(kù)

    這篇文章主要給大家介紹了關(guān)于Java8為什么需要引入新的日期與時(shí)間庫(kù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • JavaWeb實(shí)現(xiàn)文件上傳與下載實(shí)例詳解

    JavaWeb實(shí)現(xiàn)文件上傳與下載實(shí)例詳解

    在Web應(yīng)用程序開發(fā)中,文件上傳與下載功能是非常常用的功能,下面通過本文給大家介紹JavaWeb實(shí)現(xiàn)文件上傳與下載實(shí)例詳解,對(duì)javaweb文件上傳下載相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-02-02

最新評(píng)論

定西市| 航空| 诏安县| 景谷| 武川县| 桃源县| 周至县| 闻喜县| 唐山市| 垫江县| 大新县| 明光市| 山西省| 伊川县| 台北市| 全南县| 台北市| 卫辉市| 静海县| 兴国县| 教育| 舒城县| 武汉市| 巩留县| 常熟市| 许昌县| 扶沟县| 许昌县| 兴仁县| 南涧| 日喀则市| 绩溪县| 勃利县| 兰溪市| 定南县| 四川省| 营口市| 濮阳县| 普陀区| 云安县| 泽库县|