亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

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

通訊流程:

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

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

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

一個(gè)簡(jiǎn)單的小例子,服務(wù)端:

public class SocketServer {
  public static void main(String[] args) {
    try {
      // 創(chuàng)建一個(gè)服務(wù)器ServerSocket,并指定端口號(hào)為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();
    }
  }
}

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

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

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

相關(guān)文章

  • java編程數(shù)據(jù)類型全面詳解教程新手必入

    java編程數(shù)據(jù)類型全面詳解教程新手必入

    這篇文章主要為大家介紹了java編程數(shù)據(jù)類型全面詳解教程,強(qiáng)烈推薦新手入,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • 關(guān)于Java中攔截mybatis并輸出完整sql語(yǔ)句的方法

    關(guān)于Java中攔截mybatis并輸出完整sql語(yǔ)句的方法

    這篇文章主要介紹了關(guān)于Java中攔截mybatis并輸出完整sql語(yǔ)句的方法,假如項(xiàng)目中有很多很多的SQL我們不可能一一的去修改解決。這個(gè)時(shí)候我們就需要通過mybatis攔截SQL并且最終修改SQL,需要的朋友可以參考下
    2023-08-08
  • 解決idea中Springboot找不到BASE64Encoder或Decoder的jar包

    解決idea中Springboot找不到BASE64Encoder或Decoder的jar包

    這篇文章主要介紹了解決idea中Springboot找不到BASE64Encoder或Decoder的jar包,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Spring aop失效的幾種解決方案

    Spring aop失效的幾種解決方案

    這篇文章主要介紹了Spring aop失效的幾種解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • SpringBoot之@ConditionalOnProperty注解使用方法

    SpringBoot之@ConditionalOnProperty注解使用方法

    在平時(shí)業(yè)務(wù)中,我們需要在配置文件中配置某個(gè)屬性來決定是否需要將某些類進(jìn)行注入,讓Spring進(jìn)行管理,而@ConditionalOnProperty能夠?qū)崿F(xiàn)該功能,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-05-05
  • 一文弄懂fastjson

    一文弄懂fastjson

    fastjson?是一個(gè)java語(yǔ)言編寫的高性能且功能完善的JSON庫(kù),本文主要介紹了fastjson的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-05-05
  • Spring自定義注解的實(shí)現(xiàn)與使用方式

    Spring自定義注解的實(shí)現(xiàn)與使用方式

    注解是Java中用于類、方法、參數(shù)、包的裝飾標(biāo)志,本身不具備功能,但可定義參數(shù),Java包含內(nèi)建注解和元注解,如@Target、@Retention等,描述注解的使用范圍和生命周期,Spring的AOP(面向切面編程)可以結(jié)合注解實(shí)現(xiàn)功能,如權(quán)限控制和日志記錄
    2024-09-09
  • Java中Maven項(xiàng)目導(dǎo)出jar包配置的示例代碼

    Java中Maven項(xiàng)目導(dǎo)出jar包配置的示例代碼

    這篇文章主要介紹了Java中Maven項(xiàng)目導(dǎo)出jar包配置的示例代碼,需要的朋友可以參考下
    2018-11-11
  • MyBatis-Plus中如何實(shí)現(xiàn)動(dòng)態(tài)表名

    MyBatis-Plus中如何實(shí)現(xiàn)動(dòng)態(tài)表名

    這篇文章主要介紹了MyBatis-Plus中如何實(shí)現(xiàn)動(dòng)態(tài)表名問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 遞歸之斐波那契數(shù)列java的3種方法

    遞歸之斐波那契數(shù)列java的3種方法

    這篇文章主要為大家詳細(xì)介紹了遞歸之斐波那契數(shù)列java的3種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評(píng)論