使用UDP实现简单服务端客户端的示例

  介绍

这篇文章将为大家详细讲解有关使用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实现简单服务端客户端的示例就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

使用UDP实现简单服务端客户端的示例