作者 : 卿笃军
原文地址:http://blog.csdn.net/qingdujun/article/details/39300293
下面演示一个程序,用客户端给服务器发送一条信息,服务器收到后,打印在控制面板上。
1)客户端,给服务器发送数据
2)服务器,收到数据后,打印在控制面板上
一、客户端,主要步骤:
1)创建udp服务。通过DatagramSocket对象。
2)创建数据,并封装成数据包。
3)通过Socket服务,将已有数据包发送出去。通过send方式。
4)关闭资源。
客户端,发送数据代码如下:
package udp.send.qdj; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; //Udp发送端 public class CUdpsend { public static void main(String[] args) throws Exception { //1.创建udp服务。通过DatagramSocket对象。 DatagramSocket ds = new DatagramSocket(1234); //2.创建数据,并封装成数据包。 //DatagramPacket(byte[] buf, int length, InetAddress address, int port) //构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。 byte[] buf = "udp send from Server".getBytes(); DatagramPacket dp = new DatagramPacket(buf, buf.length,InetAddress.getByName("10.100.56.210"),10000); //3.通过Socket服务,将已有数据包发送出去。通过send方式。 ds.send(dp); //4.关闭资源 ds.close(); } }
二、服务器端,主要步骤如下:
1)创建Udp Socket,建立端点。监听一个端口,其实就是给这个网络程序一个数字标示,方便与明确,哪些数据该应用程序可以处理。
2)定义数据包。用于储存数据。
3)通过服务的receive方法将收到数据存入数据包中。
4)通过数据包的方法获取其中的数据。
5)关闭资源。
服务器端,接受数据并打印在控制面板上,代码如下:
package udp.rece.qdj; import java.net.DatagramPacket; import java.net.DatagramSocket; //Udp接收端 public class CUdprece { public static void main(String[] args) throws Exception{ //1.创建Udp Socket,建立端点。监听一个端口,其实就是给这个网络程序一个数字标示, //方便与明确,哪些数据该应用程序可以处理。 DatagramSocket ds = new DatagramSocket(10000); //2.定义数据包。用于储存数据。 byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,buf.length); //3.通过服务的receive方法将收到数据存入数据包中。 //此方法为阻塞式方法,没数据接受时,处于阻塞状态。 ds.receive(dp); //4.通过数据包的方法获取其中的数据。 //获得ip地址 String ip = dp.getAddress().getHostAddress(); //获得传送数据 String data = new String(dp.getData(),0,dp.getLength()); //获得端口号 int port = dp.getPort(); System.out.println("ip地址:"+ip+"\n发送内容data:"+data+"\n端口号port:"+port); //5.关闭资源 ds.close(); } }
运行结果显示:
参考文献:Java视频 毕向东 主讲
原文地址:http://blog.csdn.net/qingdujun/article/details/39300293
时间: 2024-10-12 16:10:50