程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Java實現Socket的TCP傳輸實例

Java實現Socket的TCP傳輸實例

編輯:更多關於編程

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

      客戶端發數據到服務端

      * Tcp傳輸,客戶端建立的過程。

      * 1,創建tcp客戶端socket服務。使用的是Socket對象。

      * 建議該對象一創建就明確目的地。要連接的主機。

      * 2,如果連接建立成功,說明數據傳輸通道已建立。

      * 該通道就是socket流 ,是底層建立好的。 既然是流,說明這裡既有輸入,又有輸出。

      * 想要輸入或者輸出流對象,可以找Socket來獲取。

      * 可以通過getOutputStream(),和getInputStream()來獲取兩個字節流。

      * 3,使用輸出流,將數據寫出。

      * 4,關閉資源。

      ?

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 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 { //客戶端發數據到服務端 /* * Tcp傳輸,客戶端建立的過程。 * 1,創建tcp客戶端socket服務。使用的是Socket對象。 * 建議該對象一創建就明確目的地。要連接的主機。 * 2,如果連接建立成功,說明數據傳輸通道已建立。 * 該通道就是socket流 ,是底層建立好的。 既然是流,說明這裡既有輸入,又有輸出。 * 想要輸入或者輸出流對象,可以找Socket來獲取。 * 可以通過getOutputStream(),和getInputStream()來獲取兩個字節流。 * 3,使用輸出流,將數據寫出。 * 4,關閉資源。 */ //創建客戶端socket服務。 //連接目標服務器的地址,192.168.1.100是目標服務器的地址,10002是目標服務器的端口 Socket socket = new Socket("192.168.1.100",10002); //獲取socket流中的輸出流。 向服務器輸出消息,即發消息到服務器 OutputStream out = socket.getOutputStream(); //使用輸出流將指定的數據寫出去。 out.write("tcp演示:哥們又來了!".getBytes()); //關閉資源。 socket.close(); } }

      服務端接收客戶端發送過來的數據,並打印在控制台上。

      * 建立tcp服務端的思路:

      * 1,創建服務端socket服務。通過ServerSocket對象。

      * 2,服務端必須對外提供一個端口,否則客戶端無法連接。

      * 3,獲取連接過來的客戶端對象。

      * 4,通過客戶端對象獲取socket流讀取客戶端發來的數據

      * 並打印在控制台上。

      * 5,關閉資源。關客戶端,關服務端。

      ?

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 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:發送端、接收端 (無連接) //TCP:客戶端、服務端 (要連接)先啟動服務端,在啟動客戶端 /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { //服務端接收客戶端發送過來的數據,並打印在控制台上。 /* * 建立tcp服務端的思路: * 1,創建服務端socket服務。通過ServerSocket對象。 * 2,服務端必須對外提供一個端口,否則客戶端無法連接。 * 3,獲取連接過來的客戶端對象。 * 4,通過客戶端對象獲取socket流讀取客戶端發來的數據 * 並打印在控制台上。 * 5,關閉資源。關客戶端,關服務端。 */ //1創建服務端對象。 ServerSocket ss = new ServerSocket(10002); //監聽應用所在服務器的10002端口, //看有沒有客戶端連接過來,或者發送消息 //2,獲取連接過來的客戶端對象。 Socket s = ss.accept();//阻塞式. String ip = s.getInetAddress().getHostAddress(); //獲取連接過來客戶端的IP地址 //3,通過socket對象獲取輸入流,要讀取客戶端發來的數據, 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();//關閉服務器,理論上是不用關的 } }

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

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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved