手机端小强原创文章,java小强个人博客站点
当前位置: 首页 >> NET >> 一个简单的UDP服务端和客户端示例

一个简单的UDP服务端和客户端示例

38060 NET | 2014-10-30

UDP的理论不再多说,我这里直接给出一个关于UDP的HelloWorld程序,代码明了,希望对刚入门的学生有所帮助!
当然,实际上,在这块我也刚入门!
 
首先写服务端代码,服务端邦定本地的IP和端口来监听访问:

package udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
/**
 * UDP服务类
 */
public class UdpServerSocket {
 
 private byte[] buffer = new byte[1024];
 private static DatagramSocket ds = null;
 private DatagramPacket packet = null;
 private InetSocketAddress socketAddress = null;
 
 /**
  * 测试方法
  */
 public static void main(String[] args) throws Exception {
  String serverHost = "127.0.0.1";
  int serverPort = 3344;
  UdpServerSocket udpServerSocket = new UdpServerSocket(serverHost,
    serverPort);
  while (true) {
   udpServerSocket.receive();
   udpServerSocket.response("你好,吃了吗!");
  }  
 }
 /**
  * 构造函数,绑定主机和端口
  */
 public UdpServerSocket(String host, int port) throws Exception {
  socketAddress = new InetSocketAddress(host, port);
  ds = new DatagramSocket(socketAddress);
  System.out.println("服务端启动!");
 }
 /**
  * 接收数据包,该方法会造成线程阻塞
  */
 public final String receive() throws IOException {
  packet = new DatagramPacket(buffer, buffer.length);
  ds.receive(packet);
  String info = new String(packet.getData(), 0, packet.getLength());
  System.out.println("接收信息:" + info);
  return info;
 }
 /**
  * 将响应包发送给请求端
  */
 public final void response(String info) throws IOException {
  System.out.println("客户端地址 : " + packet.getAddress().getHostAddress()
    + ",端口:" + packet.getPort());
  DatagramPacket dp = new DatagramPacket(buffer, buffer.length, packet
    .getAddress(), packet.getPort());
  dp.setData(info.getBytes());
  ds.send(dp);
 }
}

 

运行后提示服务端运行成功,程序开始监听端口,接收方法堵塞,当有访问时才会向下进行!
 
我们写客户端进行访问,看到网上的例子都是直接创建了 DatagramSocket 对象,而其实自己都不知道自己使用的端口是那个,这里我创建时会指定自己邦定的端口,其实很简单,就是初始化该对象时传递一个端口参数。
这里你访问客户端时客户端会打印你的IP和端口!
看一看客户端代码:

package udp;
import java.io.*;
import java.net.*;
/**
 * UDP客户端程序,用于对服务端发送数据,并接收服务端的回应信息
 */
public class UdpClientSocket {
 private byte[] buffer = new byte[1024];
 private static DatagramSocket ds = null;
 
 /**
  * 测试客户端发包和接收回应信息的方法
  */
 public static void main(String[] args) throws Exception {
  UdpClientSocket client = new UdpClientSocket();
  String serverHost = "127.0.0.1";
  int serverPort = 3344;
  client.send(serverHost, serverPort, ("你好,亲爱的!").getBytes());
  byte[] bt = client.receive();
  System.out.println("服务端回应数据:" + new String(bt));
  // 关闭连接
  try {
   ds.close();
  } catch (Exception ex) {
   ex.printStackTrace();
  }
 }
 /**
  * 构造函数,创建UDP客户端
  */
 public UdpClientSocket() throws Exception {
  ds = new DatagramSocket(8899); // 邦定本地端口作为客户端
 }
 
 /**
  * 向指定的服务端发送数据信息
  */
 public final void send(final String host, final int port,
   final byte[] bytes) throws IOException {
  DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress.getByName(host), port);
  ds.send(dp);
 }
 /**
  * 接收从指定的服务端发回的数据
  */
 public final byte[] receive()
   throws Exception {
  DatagramPacket dp = new DatagramPacket(buffer, buffer.length);
  ds.receive(dp);  
  byte[] data = new byte[dp.getLength()];
  System.arraycopy(dp.getData(), 0, data, 0, dp.getLength());  
  return data;
 }
}

 

直接运行程序看效果!

推荐您阅读更多有关于“ tcp socket 网络 端口 UDP ”的文章

上一篇:Discuz X3.2 掌上论坛注册死循环 下一篇:UDP 多线程服务端 和 简单客户端

猜你喜欢

发表评论:

个人资料
blogger

java小强
没有思考,人生的路会越走越难!

搜索
分类
最新微语
  • 不是本人但真实经历,如果你得了绝症抑或大病,能告诉的人两只手能数过来,而能一直陪床真正帮你的人,一只手就够了。也许你会说我亲戚多哥们多同学多云云,但真遇上的时候,你敢说吗?即使你说了会有人像你想的那样吗?不要尝试考验人性,人走茶凉之类的话都听过,但不遇到事我们未曾理解其中的道理。

    2018-11-07 11:05

  • 每个人的一生都是不同的,我们都需要负重前行。每一种生活都是不同的,我们都需要真实面对。所经历的,让我学会一件事,顺其自然。人,总有很多自己想要的,总有很多困难要面对,总有很多人要去爱,我们不断思考人生,却总是迷失自己。如今,我们最缺的不是金钱和时间,而是忘记了自己的初衷。

    2018-09-28 14:42

  • 车也学了,年也过了,生日也过了,村里的会也赶了,这次,是真的,年过去了。不过我没回京,也没有在家找工作,我在等什么吗?反正现在正合了我这个懒人的要求,不过,我歇不住,思考下人生。

    2018-03-20 00:11

  • 8月1日,我已离开奋斗多年的北京。不知道是暂时的离开,还是永久的离别,反正已经离职在家,告别每日上班,每天苦累的煎熬,过一段属于自己的生活。以前是专职工作,现在专职生活。

    2017-08-18 12:47

  • 又弄完一个项目,累成狗,但是感觉又进步不少,除了很多坑已经踩过,做起来也是轻车熟路。同时也认识到,程序不在于你多牛逼,而是在乎你的细节把控度,而细节的关注,是一个优秀程序员必须要注意的。另外,要相信自己,勇敢向前,没人生下来就是成功的,而且,成功的路,比成功本身更重要。

    2017-06-30 09:46

  • 更多»

最新文章
热门文章
随机文章