1. 程式人生 > >java基礎 UDP通信

java基礎 UDP通信

cal 圖片 new 數據 實現 等待 AI test throws

無連接通信 UDP

客戶端

package com.swift.test;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

/*使用UDP通信編寫一個Java程序.要求:獲取鍵盤輸入的內容.發送到服務端.服務端接收後.在控制臺上打印接收到的內容
客戶端
    1.創建鍵盤錄入對象.獲取鍵盤錄入數據
    2.創建DatagramSocket對象
    3.創建DatagramPacket對象.並封裝鍵盤錄入的數據
    4.發送數據
    5.釋放流資源
服務端
    1.創建DatagramSocket對象
    2.創建DatagramPacket對象
    3.接收數據存儲到DatagramPacket對象中
    4.獲取DatagramPacket對象的內容
    5.在控制臺上打印接收到的內容
    6.釋放流資源
*/ public class DemoUDPClient { public static void main(String[] args) throws IOException { Scanner scan=new Scanner(System.in); System.out.println("請輸入要傳達的內容:"); String str=scan.nextLine(); DatagramSocket datagramSocket=new DatagramSocket(); byte[] buf=str.getBytes(); DatagramPacket datagramPacket
=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.105.22"),6464); datagramSocket.send(datagramPacket); datagramSocket.close(); } }

服務端

package com.swift.test;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/*使用UDP通信編寫一個Java程序.要求:獲取鍵盤輸入的內容.發送到服務端.服務端接收後.在控制臺上打印接收到的內容 客戶端 1.創建鍵盤錄入對象.獲取鍵盤錄入數據 2.創建DatagramSocket對象 3.創建DatagramPacket對象.並封裝鍵盤錄入的數據 4.發送數據 5.釋放流資源 服務端 1.創建DatagramSocket對象 2.創建DatagramPacket對象 3.接收數據存儲到DatagramPacket對象中 4.獲取DatagramPacket對象的內容 5.在控制臺上打印接收到的內容 6.釋放流資源 */ public class DemoUDPServer { public static void main(String[] args) throws IOException { DatagramSocket datagramSocket=new DatagramSocket(6464); InetAddress ip=InetAddress.getLocalHost(); String ipString=ip.getHostAddress(); String nameString=ip.getHostName(); System.out.println(ipString+" "+nameString); byte[] buf=new byte[1024]; DatagramPacket datagramPacket=new DatagramPacket(buf,1024); datagramSocket.receive(datagramPacket); System.out.println(new String(buf)); datagramSocket.close(); } }

結果

技術分享圖片

有連接通信TCP

客戶端

package com.swift.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

/*使用socket編寫一個Java程序,要求:客戶端發送內容“我是客戶端”到服務端,服務端接收後,在控制臺上打印接收到的內容,並返回內容“我來自服務端”到客戶端,客戶端接收服務端的發送的內容後將接收內容打印在控制臺
?客戶端
    1.創建客戶端的Socket對象
    2.獲取Socket的輸出流對象
    3.寫數據給服務器
    4.獲取Socket的輸入流對象
    5.使用輸入流,讀反饋信息
    6.關閉流資源
*/

public class DemoTCPClient {

    public static void main(String[] args) throws IOException {

        Socket s=new Socket(InetAddress.getByName("10.254.3.116"),8888);
        OutputStream out=s.getOutputStream();
        byte[] buf="我是客戶端".getBytes();
        out.write(buf);
        InputStream in=s.getInputStream();
        byte[] bytes=new byte[128];
        in.read(bytes);
        System.out.println(new String(bytes));
     s.close(); } }

服務端

package com.swift.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

/*使用socket編寫一個Java程序,要求:客戶端發送內容“我是客戶端”到服務端,服務端接收後,在控制臺上打印接收到的內容,並返回內容“我來自服務端”到客戶端,客戶端接收服務端的發送的內容後將接收內容打印在控制臺

?服務器端
    1.創建服務器端ServerSocket對象,指定服務器端端口號
    2.開啟服務器,等待著客戶端Socket對象的連接,如有客戶端連接,返回客戶端的Socket對象
    3.通過客戶端的Socket對象,獲取客戶端的輸入流,為了實現獲取客戶端發來的數據
    4.通過客戶端的輸入流,獲取流中的數據
    5.通過客戶端的Socket對象,獲取客戶端的輸出流,為了實現給客戶端反饋信息
    6.通過客戶端的輸出流,寫數據到流中
    7.關閉流資源*/

public class DemoTCPServer {

    public static void main(String[] args) throws IOException {

        ServerSocket serverSocket=new ServerSocket(8888);
        InetAddress ip=InetAddress.getLocalHost();
        System.out.println(ip.getHostAddress());
        Socket s=serverSocket.accept();
        InputStream in=s.getInputStream();
        byte[] buf=new byte[128];
        in.read(buf);
        System.out.println(new String(buf));
        OutputStream out=s.getOutputStream();
        out.write("我來自服務端".getBytes());
     serverSocket.close();
     s.close();
} }

java基礎 UDP通信