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);     
       }
}
}
相关文章
相关标签/搜索