UDP編程

客戶端:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
//UDP客戶端,發送數據,必須先運行服務器才能發送,不然出錯
public class SendClient {
public static void main(String[] args) throws Exception {
//1.建立DatagramSocket 給一個端口8888,不然發送端會隨機分配
     DatagramSocket socket=new DatagramSocket(8888);
     //2.準備數據:鍵盤輸入
     Scanner input = new Scanner(System.in);
     //要發送給的服務器ip:InetAddress ia=InetAddress.getByName("192.168.10.62");
     //本次是發給本身因此用下面的這個
     InetAddress ip=InetAddress.getLocalHost();
     //服務端的端口
     int port=8889;
     //3.建立套接字:數據包
     DatagramPacket dp=null;
     byte[]a;
     String str=null;
     while(true){
     str=input.nextLine();//接收一條數據。
     if("000".equals(str.trim())){//輸入一000結束
break;
}
     //將數據打包成數據包發送
     a=str.getBytes();
     dp=new DatagramPacket(a, 0,a.length,ip,port);
    //發送數據報包
     socket.send(dp);
     }
     socket.close();
}
}
服務端:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
//UDP服務端,接收數據
public class ReceivceClient {
public static void main(String[] args) throws Exception {
//1.建立接收套接,注意端口號必須一致,不然接收不到
       DatagramSocket socketreceivce=new DatagramSocket(8889);
       //2.準備緩衝區接收數據
       byte[] b=new byte[1024];
       //3.準備數據報包,將數據傳到數組中
       DatagramPacket dp=new DatagramPacket(b, b.length);
       int len=-1;
       while(true){
     socketreceivce.receive(dp); 
    //得到對方的ip地址,端口,數據。
     len=dp.getLength();//本次得到的字節數量
     String str=new String(b, 0, len);
     System.out.println("ip:"+dp.getAddress().getHostAddress()+"端口:"+dp.getPort()+"內容: "+str);     
       }
}
}
相關文章
相關標籤/搜索