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

JAVA編程實現(xiàn)TCP網(wǎng)絡(luò)通訊的方法示例

 更新時間:2017年08月02日 12:08:07   作者:遲做總比不做強(qiáng)  
這篇文章主要介紹了JAVA編程實現(xiàn)TCP網(wǎng)絡(luò)通訊的方法,簡單說明了TCP通訊的原理并結(jié)合具體實例形式分析了java實現(xiàn)TCP通訊的步驟與相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了JAVA編程實現(xiàn)TCP網(wǎng)絡(luò)通訊的方法。分享給大家供大家參考,具體如下:

TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。

由IETF的RFC 793定義,在簡化的計算機(jī)網(wǎng)絡(luò)OSI模型中,它完成第四層傳輸層所指定的功能。

基于TCP網(wǎng)絡(luò)通訊實現(xiàn)的類主要有服務(wù)器端的ServerSocket用客戶端的Socket。

通訊流程:

打開服務(wù)器,等待客戶端連接-->客戶端連接上服務(wù)器-->數(shù)據(jù)通訊。

代碼實現(xiàn)步驟:

1. 創(chuàng)建服務(wù)器端(ServerSocket)對象或客戶端(Socket)對象。
2. 建立起服務(wù)器與客戶端連接
3. 通過輸入輸出流進(jìn)行文件(數(shù)據(jù))通訊
4. 通訊結(jié)束 ,關(guān)閉資源 。

一個簡單的小例子,服務(wù)端:

public class SocketServer {
  public static void main(String[] args) {
    try {
      // 創(chuàng)建一個服務(wù)器ServerSocket,并指定端口號為5120
      ServerSocket mServerSocket = new ServerSocket(5120);
      // 等待客戶端連接
      Socket socket = mServerSocket.accept();
      // 連接上客戶端后,獲取客戶端輸入流信息
      InputStream is = socket.getInputStream();
      // 通過獲取緩沖數(shù)據(jù)方式來讀取文本信息
      BufferedReader br = new BufferedReader(new InputStreamReader(is));
      // 獲取文本信息
      String line;
      StringBuffer sb = new StringBuffer();
      while ((line = br.readLine()) != null) {
        sb.append(line);
      }
      System.out.println(sb.toString());
      socket.shutdownInput();
      // 收到客戶端信息后,回復(fù)客戶端信息
      OutputStream os = socket.getOutputStream();
      PrintWriter pw = new PrintWriter(os);
      pw.write("收到回復(fù),我是服務(wù)端");
      pw.flush();
      // 關(guān)閉流通常放在finally中操作
      os.close();
      br.close();
      is.close();
      pw.close();
      socket.close();
      mServerSocket.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

客戶端:

public class ClientSocket {
  public static void main(String[] args) {
    try {
      // 創(chuàng)建客戶端Socket,指定主機(jī)和端口
      Socket mSocket = new Socket("localhost", 5120);
      // 通過輸入流向服務(wù)器發(fā)數(shù)據(jù)
      OutputStream os = mSocket.getOutputStream();
      PrintWriter pw = new PrintWriter(os);
      pw.write("來自客戶端Socket的數(shù)據(jù),你收到了嗎?");
      pw.flush();
      mSocket.shutdownOutput();
      // 收取服務(wù)端的回復(fù)信息
      InputStream is = mSocket.getInputStream();
      // 通過獲取緩沖數(shù)據(jù)方式來讀取文本信息
      BufferedReader br = new BufferedReader(new InputStreamReader(is));
      // 獲取文本信息
      String line;
      StringBuffer sb = new StringBuffer();
      while ((line = br.readLine()) != null) {
        sb.append(line);
      }
      System.out.println(sb.toString());
      // 關(guān)閉流通常放在finally中操作
      br.close();
      is.close();
      pw.close();
      os.close();
      mSocket.close();
    } catch (UnknownHostException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

運行時,要先啟動服務(wù)端,然后啟動客記戶端,通常網(wǎng)絡(luò)通訊會與多線程交織在一起。

更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java Socket編程技巧總結(jié)》、《Java文件與目錄操作技巧匯總》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • Java實現(xiàn)一個順序表的完整代碼

    Java實現(xiàn)一個順序表的完整代碼

    順序表是用一段物理地址連續(xù)的存儲單元依次存儲數(shù)據(jù)元素的線性結(jié)構(gòu),一般采用數(shù)組存儲。在數(shù)組上完成數(shù)據(jù)的增刪減改。順序表的底層是一個數(shù)組
    2021-04-04
  • 詳談Java多線程的幾個常用關(guān)鍵字

    詳談Java多線程的幾個常用關(guān)鍵字

    下面小編就為大家?guī)硪黄斦凧ava多線程的幾個常用關(guān)鍵字。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Springboot es包版本異常解決方案

    Springboot es包版本異常解決方案

    這篇文章主要介紹了springboot 項目依賴 es包版本異常,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Spring?ComponentScan的掃描過程解析

    Spring?ComponentScan的掃描過程解析

    這篇文章主要介紹了spring?ComponentScan的掃描過程解析,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • 關(guān)于Spring MVC在Controller層中注入request的坑詳解

    關(guān)于Spring MVC在Controller層中注入request的坑詳解

    這篇文章主要給大家介紹了關(guān)于Spring MVC在Controller層中注入request的坑的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • 深入解析Java接口(interface)的使用

    深入解析Java接口(interface)的使用

    這篇文章主要介紹了深入解析Java接口(interface)的使用,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • IntelliJ?IDEA?2020.2.3永久破解激活教程(親測有效)

    IntelliJ?IDEA?2020.2.3永久破解激活教程(親測有效)

    intellij?idea?2022是一款市面上最好的JAVA?IDE編程工具,該工具支持git、svn、github等版本控制工具,整合了智能代碼助手、代碼自動提示等功能,本教程給大家分享IDEA?2022最新永久激活碼,感興趣的朋友參考下吧
    2020-10-10
  • MyBatis框架之mybatis逆向工程自動生成代碼

    MyBatis框架之mybatis逆向工程自動生成代碼

    Mybatis屬于半自動ORM,在使用這個框架中,工作量最大的就是書寫Mapping的映射文件,由于手動書寫很容易出錯,我們可以利用Mybatis-Generator來幫我們自動生成文件。本文主要給大家介紹mybatis逆向工程自動生成代碼,感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04
  • JSON字符串轉(zhuǎn)成java的Map對象詳細(xì)步驟

    JSON字符串轉(zhuǎn)成java的Map對象詳細(xì)步驟

    這篇文章主要介紹了如何將JSON字符串轉(zhuǎn)換為Java對象的步驟,包括定義Element類、使用Jackson庫解析JSON和添加依賴,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • mybatis-plus 新增/修改如何實現(xiàn)自動填充指定字段

    mybatis-plus 新增/修改如何實現(xiàn)自動填充指定字段

    這篇文章主要介紹了mybatis-plus 新增/修改實現(xiàn)自動填充指定字段方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論

太保市| 崇州市| 微博| 永仁县| 海晏县| 三门县| 昆山市| 容城县| 乌恰县| 微博| 施秉县| 湘乡市| 凤冈县| 大冶市| 龙门县| 霍林郭勒市| 金坛市| 新营市| 罗定市| 张家界市| 定远县| 灌云县| 留坝县| 宝应县| 汤阴县| 临武县| 岫岩| 海伦市| 那曲县| 大丰市| 潮安县| 惠安县| 嵩明县| 登封市| 富源县| 天祝| 讷河市| 宣恩县| 汪清县| 中牟县| 嘉禾县|