资讯专栏INFORMATION COLUMN

【Java】UDP发包的简单实现

SoapEye / 2782人阅读

摘要:最近在学,正好做一些笔记,以防止自己忘了。端创建绑定的与方法用于测试端接收消息本地测试打印结果

最近在学Java,正好做一些笔记,以防止自己忘了。

client端
//UdpClient.java
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;


public class UdpClient {
    private static DatagramSocket clientSocket = null;
    private InetSocketAddress serverAddress = null;

    public UdpClient(String host, int port) throws SocketException {
        clientSocket = new DatagramSocket( );           //创建socket        
        serverAddress = new InetSocketAddress(host, port);  //绑定sever的ip与port
    }


    public void send(String msg) throws IOException {
        try {
            byte[] data = msg.getBytes("utf-8");   
            DatagramPacket packet = new DatagramPacket(data, data.length, serverAddress);
            clientSocket.send(packet);
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    //main方法用于测试
    public static void main(String[] args) throws Exception {  
        UdpClient client = new UdpClient("127.0.0.1", 14586);
        client.send("hello world");
        clientSocket.close();
    }
}
server端
//UdpServer.java
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;


public class UdpServer {
    private byte[] data = new byte[1024];
    private static DatagramSocket serverSocket = null;
    private DatagramPacket packet = null;

    public UdpServer(int port) throws SocketException {
        serverSocket = new DatagramSocket(port);
        System.out.println("sever start!");
    }

    //接收消息
    public String recieve() throws IOException {
        packet = new DatagramPacket(data, data.length);
        serverSocket.receive(packet);
        String info = new String(packet.getData(), 0, packet.getLength());
        System.out.println("recieve message from " + packet.getAddress().getHostAddress()
                + ":" + packet.getPort() + "	"+ info);
        return info;
    }

    //本地测试
    public static void main(String[] args) throws Exception {
        UdpServer server = new UdpServer(14586);
        server.recieve();   
    }
}
打印结果
  

sever start!
recieve message from 127.0.0.1:64478 hello world

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64110.html

相关文章

  • 模拟Syslog客户端UDP发送日志

    摘要:上一篇,我初步整理了服务端接收日志的例子,本篇主要是对客户端模拟操作的一个基本例子。 上一篇,我初步整理了Syslog服务端接收日志的例子,本篇主要是对客户端模拟操作的一个基本例子。 package com.tony.util; import java.io.*; import java.net.*; /** * UDP客户端程序,用于对服务端发送数据,并接...

    Eidesen 评论0 收藏0
  • RPC框架是啥?

    摘要:知乎的点赞,应该还是可以参考的。除了网络通信,还需要有高效的序列化框架,以及一种寻址方式,如果是带会话状态的调用,还需要有会话的状态保持的功能。一般来说,框架实现的架构原理都是类似的。服务端响应主要是服务端业务逻辑实现。 本博客 猫叔的博客,转载请申明出处 在我刚刚了解分布式的时候,经常对RPC和分布式有些混淆,甚至一直以为两者对等,所以我们先看看他们有什么区别? RPC实现了服务消费...

    xietao3 评论0 收藏0
  • RPC框架是啥?

    摘要:知乎的点赞,应该还是可以参考的。除了网络通信,还需要有高效的序列化框架,以及一种寻址方式,如果是带会话状态的调用,还需要有会话的状态保持的功能。一般来说,框架实现的架构原理都是类似的。服务端响应主要是服务端业务逻辑实现。 本博客 猫叔的博客,转载请申明出处 在我刚刚了解分布式的时候,经常对RPC和分布式有些混淆,甚至一直以为两者对等,所以我们先看看他们有什么区别? RPC实现了服务消费...

    didikee 评论0 收藏0
  • Vert.x入坑须知(2)

    摘要:这一点其实是非常不妥的,有潜在的安全问题。这次,在项目中终于采用了以它为基础的集群方案。相反,使用一个周期,但针对每个生成一个一次性的,模拟随机发送。同时,要记得用完之后立即释放。 当初创建简书账号的时候曾立下宏愿,希望保持周更,无奈现实残酷,整个5月都处于忙忙碌碌的状态,居然令这个本来并不算太宏伟的目标难以为继,最终导致5月份交了白卷!【好吧,我承认,是我意志不够坚定,太懒了,;)】...

    xialong 评论0 收藏0
  • Java多线程进阶(一)—— J.U.C并发包概述

    摘要:整个包,按照功能可以大致划分如下锁框架原子类框架同步器框架集合框架执行器框架本系列将按上述顺序分析,分析所基于的源码为。后,根据一系列常见的多线程设计模式,设计了并发包,其中包下提供了一系列基础的锁工具,用以对等进行补充增强。 showImg(https://segmentfault.com/img/remote/1460000016012623); 本文首发于一世流云专栏:https...

    anonymoussf 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<