UDP通信プロトコル

4165 ワード

Javaではネットワーク通信業でSocket(コンセント)通信と呼ばれ,通信を要求する2台の機器にSocketをインストールしなければならない.異なるプロトコルには異なるソケットUDP通信プロトコルの特徴がある:1.データ極をパケットにカプセル化し、接続なしに向ける.2.パケットサイズは64 Kに制限する.3.接続がないため、信頼性が低い4.接続を確立する必要がないため、速度が速い5.udp通信はサービス側とクライアントを区別せず、送信側と受信側だけを区別する.
例えば:物管のインターホン、Qチャット、ゲーム...
udpプロトコルの下のSocket:DatagramSocket(udpソケットサービス)DatagramPacket(パケットクラス)DatagramPacket(buf,length,address,port)buf:送信されたデータコンテンツlength:送信されたデータコンテンツのサイズ.address:送信先IPアドレスオブジェクトport:ポート番号.
1.送信側コード:
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/*
        :
    1.   udp   。
    2.     ,            。           ip      。
    3.   udp   ,    。
    4.     。
*/

//   
public class Demo1Sender {

    public static void main(String[] args) throws IOException {
        //  udp   
        DatagramSocket datagramSocket = new DatagramSocket();
        //    ,          。
        String data = "       udp   ..";
        //        
        DatagramPacket packet = new DatagramPacket(data.getBytes(), data.getBytes().length,InetAddress.getLocalHost() , 9090);
        //  udp        
        datagramSocket.send(packet);
        //     ---             
        datagramSocket.close();

    }

}

2.受信側コード:
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

//   
/*
         
    1.   udp   
    2.              。
    3.   udp       。
    4.     

 */
public class Demo1Receive {

    public static void main(String[] args) throws IOException {
        //  udp    ,         。
        DatagramSocket  socket = new DatagramSocket(9090);

        //             。
        byte[] buf = new byte[1024];
        DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length); // 1024
        //  udp       
        socket.receive(datagramPacket); //receive         ,               。            byte       。
        System.out.println("         :"+ new String(buf,0,datagramPacket.getLength())); // getLength()             。
        //    
        socket.close();

    }

}