Java—網絡編程

協議

  • UDP協議:將數據源和目的封裝在數據包中,不需要建立連接。每個數據報的大小在64k,因爲沒有連接所有是不可靠的協議,但是速度快。
  • TCP協議:建立連接,形成傳輸數據的通道。在連接中進行數據的傳輸,通過三次握手完成連接,是可靠的連接,但是速度較慢。

使用UDP發送接收數據

package Test_13;

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

/*
 * 使用UDP協議發送數據
 * 
 * DatagramSocket:此類表示用來發送和接收數據報包的套接字
 * 
 * DatagramPacket:此類表示數據報包
 */
public class SendDemo {
    public static void main(String[] args) throws IOException {
        //創建發送端Socket對象
        DatagramSocket ds = new DatagramSocket();
        //創建數據並打包
        String s = "hello world";
        byte[] bt = s.getBytes();
        int length = bt.length;
        InetAddress address = InetAddress.getByName("Lenovo-PC");
        int port = 8888;
        DatagramPacket dp = new DatagramPacket(bt,length,address,port);
        //發送數據
        ds.send(dp);
        //釋放資源
        ds.close();
    }
}


----------

package Test_13;

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

/*
 * 使用UDP協議接收數據
 * 
 * 
 */
public class ReceiveDemo {
    public static void main(String[] args) throws IOException {
        //創建接收端Socket對象
        DatagramSocket ds = new DatagramSocket(8888);

        //接收數據
        byte[] bt = new byte[1024];
        DatagramPacket dp = new DatagramPacket(bt, bt.length);
        ds.receive(dp);

        //解析數據
        InetAddress address = dp.getAddress();
        byte[] data = dp.getData();
        int length = dp.getLength();

        //輸出數據
        System.out.println("sender-->"+address.getHostAddress());
        System.out.println(new String(data,0,length));

        //釋放資源
        ds.close();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章