前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[javaSE] 网络编程(UDP通信)

[javaSE] 网络编程(UDP通信)

作者头像
唯一Chat
发布2019-09-10 15:33:38
4660
发布2019-09-10 15:33:38
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地

UDP发送端

获取DatagramSocket对象,new出来

获取DatagramPacket对象,new出来,构造参数:byte[]数组,int长度,InetAddress对象,int端口

调用DatagramSocket对象的send()方法,发送出去,参数:DatagramPacket对象

调用DatagramSocket对象的close()方法,关闭资源

代码语言:javascript
复制
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
 * 发送端
 * @author taoshihan
 *
 */
public class Sender {
    public static void main(String[] args) throws Exception {
        DatagramSocket ds=new DatagramSocket();
        byte[] buf="Hello UDP".getBytes();
        DatagramPacket p=new DatagramPacket(buf, buf.length, InetAddress.getLocalHost(),10000);
        ds.send(p);
        ds.close();
    }
}

UDP接收端

获取DatagramSocket对象,new出来,构造参数:int端口号

获取DatagramPacket对象,new出来,构造参数:byte[]数组,int长度

调用DatagramSocket对象的receive()方法,接收数据,参数:DatagramPacket对象

调用DatagramPacket对象的getAddress()方法,获取到InetAdress对象

调用DatagramPacket对象的getData()方法,获取到byte[]字节数组,接收的数据

调用DatagramPacket对象的getLength()方法,获取到数据长度

通过new String()包一下,获得String数据,参数:byte[]数组,0开始,length长度

代码语言:javascript
复制
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
 * 接收端
 * @author taoshihan
 *
 */
public class Receiver {
    public static void main(String[] args) throws Exception {
        DatagramSocket ds=new DatagramSocket(10000);
        byte[] buf=new byte[1024];
        DatagramPacket datagramPacket=new DatagramPacket(buf, buf.length);
        ds.receive(datagramPacket);
        
        InetAddress ip= datagramPacket.getAddress();
        int port=datagramPacket.getPort();
        byte[] resByte=datagramPacket.getData();
        int length=datagramPacket.getLength();
        
        String info=new String(resByte,0,length);
        System.out.println("来自:"+ip.getHostAddress()+":"+port+"说:"+info);
        
    }
}

结果:

来自:100.66.217.80:56356说:Hello UDP

先运行接收端,此时程序会阻塞住,等待接收。。。

再运行发送端

接收到一次以后就会断,用while(true) 包一下,死循环但是会阻塞住,注意不要把创建DatagramSocket包进去

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-05-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档