介绍
这篇文章将为大家详细讲解有关使用UDP实现简单服务端客户端的示例,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
首先写服务端代码,服务端邦定本地的IP和端口来监听访问:
udp包; 进口java.io.IOException; 进口java.net.DatagramPacket; 进口java.net.DatagramSocket; 进口java.net.InetSocketAddress;/* * * UDP服务类 */公开课UdpServerSocket { 私人byte[]新字节缓冲区=[1024]; 私有静态DatagramSocket ds=零; 私人DatagramPacket包=零; 私人InetSocketAddress socketAddress=零;都/* * *测试方法 */公共静态void main (String [] args){抛出异常 字符串serverHost=?27.0.0.1"; int serverPort=3344; UdpServerSocket UdpServerSocket=new UdpServerSocket (serverHost serverPort); 而(真){ udpServerSocket.receive (); udpServerSocket.response(“你好,吃了吗!“); } }/* * *构造函数,绑定主机和端口 */公共UdpServerSocket(字符串主机,int端口){抛出异常 socketAddress=都新的InetSocketAddress(主机、端口); ds=new DatagramSocket (socketAddress)都; System.out.println(“服务端启动!“); }/* * *接收数据包,该方法会造成线程阻塞 */公众最终字符串接收()抛出IOException { 包=new DatagramPacket(缓冲区,buffer.length); ds.receive(包); 字符串信息=新的字符串(packet.getData (), 0, packet.getLength ()); System.out.println(“接收信息:“+信息); 返回信息; }/* * *将响应包发送给请求端 */公众最终无效响应(字符串信息)抛出IOException { System.out.println(“客户端地址:“.getHostAddress + packet.getAddress () () +“端口:“;+ packet.getPort ()); DatagramPacket dp=new DatagramPacket(缓冲,缓冲。长度,包 .getAddress (), packet.getPort ()); dp.setData (info.getBytes ()); ds.send (dp); } }
运行后提示服务端运行成功,程序开始监听端口,接收方法堵塞,当有访问时才会向下进行!
我们写客户端进行访问,看到网上的例子都是直接创建了DatagramSocket对象,而其实自己都不知道自己使用的端口是那个,这里我创建时会指定自己邦定的端口,其实很简单,就是初始化该对象时传递一个端口参数。
这里你访问客户端时客户端会打印你的IP和端口!
看一看客户端代码:
udp包; 进口. io . *; 进口java.net。*;/* * * UDP客户端程序,用于对服务端发送数据,并接收服务端的回应信息 */公开课UdpClientSocket { 私人byte[]新字节缓冲区=[1024]; 私有静态DatagramSocket ds=零;/* * *测试客户端发包和接收回应信息的方法 */公共静态void main (String [] args){抛出异常 UdpClientSocket客户=new UdpClientSocket (); 字符串serverHost=?27.0.0.1"; int serverPort=3344; 客户端。发送(serverHost serverPort(“你好,亲爱的!“).getBytes ()); byte [] bt=client.receive (); System.out.println(“服务端回应数据:“+新的字符串(bt));//关闭连接 尝试{ ds.close (); }捕捉(例外的前女友){ ex.printStackTrace (); } }/* * *构造函数,创建UDP客户端 */公共UdpClientSocket()抛出异常{ ds=new DatagramSocket (8899);//邦定本地端口作为客户端 }/* * *向指定的服务端发送数据信息 */公众最终无效发送(最终字符串主机,最后int港口, 最后一个byte[]字节)抛出IOException { DatagramPacket dp=new DatagramPacket(字节,字节。长度,InetAddress.getByName(主机)、港口); ds.send (dp); }/* * *接收从指定的服务端发回的数据 */公众最终byte[]接收() 抛出异常{ DatagramPacket dp=new DatagramPacket(缓冲区,buffer.length); ds.receive (dp); byte [] data=https://www.yisu.com/zixun/new byte [dp.getLength ()); System.arraycopy (dp.getData() 0数据,0,dp.getLength ()); 返回数据; } }
直接运行程序看效果!
关于使用UDP实现简单服务端客户端的示例就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。