欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現(xiàn)Socket的TCP傳輸實例

 更新時間:2015年05月29日 12:35:33   作者:wo_soul  
這篇文章主要介紹了Java實現(xiàn)Socket的TCP傳輸,實例分析了java通過socket實現(xiàn)TCP傳輸?shù)南嚓P(guān)技巧,需要的朋友可以參考下

本文實例講述了Java實現(xiàn)Socket的TCP傳輸。分享給大家供大家參考。具體分析如下:

客戶端發(fā)數(shù)據(jù)到服務(wù)端

* Tcp傳輸,客戶端建立的過程。
* 1,創(chuàng)建tcp客戶端socket服務(wù)。使用的是Socket對象。
* 建議該對象一創(chuàng)建就明確目的地。要連接的主機。
* 2,如果連接建立成功,說明數(shù)據(jù)傳輸通道已建立。
* 該通道就是socket流 ,是底層建立好的。 既然是流,說明這里既有輸入,又有輸出。
* 想要輸入或者輸出流對象,可以找Socket來獲取。
* 可以通過getOutputStream(),和getInputStream()來獲取兩個字節(jié)流。
* 3,使用輸出流,將數(shù)據(jù)寫出。
* 4,關(guān)閉資源。

package com.socket.tcp.demo; 
import java.io.IOException; 
import java.io.OutputStream; 
import java.net.Socket; 
import java.net.UnknownHostException; 
public class ClientDemo { 
  /** 
   * @param args 
   * @throws IOException 
   * @throws UnknownHostException 
   */ 
  public static void main(String[] args) throws UnknownHostException, IOException { 
    //客戶端發(fā)數(shù)據(jù)到服務(wù)端 
    /* 
     * Tcp傳輸,客戶端建立的過程。 
     * 1,創(chuàng)建tcp客戶端socket服務(wù)。使用的是Socket對象。 
     *   建議該對象一創(chuàng)建就明確目的地。要連接的主機。 
     * 2,如果連接建立成功,說明數(shù)據(jù)傳輸通道已建立。 
     *   該通道就是socket流 ,是底層建立好的。 既然是流,說明這里既有輸入,又有輸出。 
     *   想要輸入或者輸出流對象,可以找Socket來獲取。 
     *   可以通過getOutputStream(),和getInputStream()來獲取兩個字節(jié)流。 
     * 3,使用輸出流,將數(shù)據(jù)寫出。 
     * 4,關(guān)閉資源。 
     */ 
    //創(chuàng)建客戶端socket服務(wù)。 
    //連接目標服務(wù)器的地址,192.168.1.100是目標服務(wù)器的地址,10002是目標服務(wù)器的端口 
    Socket socket = new Socket("192.168.1.100",10002); 
    //獲取socket流中的輸出流。 向服務(wù)器輸出消息,即發(fā)消息到服務(wù)器 
    OutputStream out = socket.getOutputStream(); 
    //使用輸出流將指定的數(shù)據(jù)寫出去。 
    out.write("tcp演示:哥們又來了!".getBytes()); 
    //關(guān)閉資源。 
    socket.close(); 
  } 
}

服務(wù)端接收客戶端發(fā)送過來的數(shù)據(jù),并打印在控制臺上。

* 建立tcp服務(wù)端的思路:
* 1,創(chuàng)建服務(wù)端socket服務(wù)。通過ServerSocket對象。
* 2,服務(wù)端必須對外提供一個端口,否則客戶端無法連接。
* 3,獲取連接過來的客戶端對象。
* 4,通過客戶端對象獲取socket流讀取客戶端發(fā)來的數(shù)據(jù)
* 并打印在控制臺上。
* 5,關(guān)閉資源。關(guān)客戶端,關(guān)服務(wù)端。

package com.socket.tcp.demo; 
import java.io.IOException; 
import java.io.InputStream; 
import java.net.ServerSocket; 
import java.net.Socket; 
public class ServerDemo { 
  //UDP:發(fā)送端、接收端 (無連接) 
  //TCP:客戶端、服務(wù)端 (要連接)先啟動服務(wù)端,在啟動客戶端 
  /** 
   * @param args 
   * @throws IOException 
   */ 
  public static void main(String[] args) throws IOException { 
   //服務(wù)端接收客戶端發(fā)送過來的數(shù)據(jù),并打印在控制臺上。  
    /* 
     * 建立tcp服務(wù)端的思路: 
     * 1,創(chuàng)建服務(wù)端socket服務(wù)。通過ServerSocket對象。 
     * 2,服務(wù)端必須對外提供一個端口,否則客戶端無法連接。 
     * 3,獲取連接過來的客戶端對象。 
     * 4,通過客戶端對象獲取socket流讀取客戶端發(fā)來的數(shù)據(jù) 
     *   并打印在控制臺上。 
     * 5,關(guān)閉資源。關(guān)客戶端,關(guān)服務(wù)端。 
     */ 
    //1創(chuàng)建服務(wù)端對象。 
    ServerSocket ss = new ServerSocket(10002);
    //監(jiān)聽應(yīng)用所在服務(wù)器的10002端口,
    //看有沒有客戶端連接過來,或者發(fā)送消息 
    //2,獲取連接過來的客戶端對象。 
    Socket s = ss.accept();//阻塞式. 
    String ip = s.getInetAddress().getHostAddress();
    //獲取連接過來客戶端的IP地址 
    //3,通過socket對象獲取輸入流,要讀取客戶端發(fā)來的數(shù)據(jù), 
    InputStream in = s.getInputStream(); 
    byte[] buf = new byte[1024]; 
    int len = in.read(buf); 
    String text = new String(buf,0,len); 
    System.out.println(ip+":"+text); 
    s.close(); 
    ss.close();//關(guān)閉服務(wù)器,理論上是不用關(guān)的 
  } 
}

運行效果圖:(先啟動服務(wù)端,后啟動客戶端)

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

相關(guān)文章

  • Mybatis分頁的實現(xiàn)及使用注解開發(fā)操作

    Mybatis分頁的實現(xiàn)及使用注解開發(fā)操作

    這篇文章主要介紹了Mybatis分頁的實現(xiàn)及使用注解開發(fā)操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java實現(xiàn)二維碼掃碼授權(quán)登陸

    java實現(xiàn)二維碼掃碼授權(quán)登陸

    這篇文章主要為大家詳細介紹了java實現(xiàn)二維碼掃碼授權(quán)登陸,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 詳解SpringBoot 應(yīng)用如何提高服務(wù)吞吐量

    詳解SpringBoot 應(yīng)用如何提高服務(wù)吞吐量

    這篇文章主要介紹了Spring Boot 應(yīng)用如何提高服務(wù)吞吐量,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • Java 圖表類庫詳解

    Java 圖表類庫詳解

    本文主要介紹了Java圖表類庫的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • SpringBoot實現(xiàn)微信及QQ綁定登錄的示例代碼

    SpringBoot實現(xiàn)微信及QQ綁定登錄的示例代碼

    本文主要介紹了SpringBoot實現(xiàn)微信及QQ綁定登錄的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • SpringCloud Zuul在何種情況下使用Hystrix及問題小結(jié)

    SpringCloud Zuul在何種情況下使用Hystrix及問題小結(jié)

    這篇文章主要介紹了SpringCloud Zuul在何種情況下使用Hystrix 及問題小結(jié),感興趣的朋友跟隨小編一起看看吧
    2018-11-11
  • 解析阿里一面CyclicBarrier和CountDownLatch的區(qū)別

    解析阿里一面CyclicBarrier和CountDownLatch的區(qū)別

    這篇文章主要介紹了阿里一面CyclicBarrier和CountDownLatch的區(qū)別是啥,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 解決maven加載依賴時遇到的問題

    解決maven加載依賴時遇到的問題

    這篇文章主要介紹了解決maven加載依賴時遇到的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Spring FreeMarker整合Struts2過程詳解

    Spring FreeMarker整合Struts2過程詳解

    這篇文章主要介紹了Spring FreeMarker整合Struts2過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • 模擬Ping操作的一個Java類

    模擬Ping操作的一個Java類

    這篇文章主要為大家詳細介紹了一個模擬Ping操作的Java類,感興趣的小伙伴們可以參考一下
    2016-03-03

最新評論