博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UDP传输
阅读量:4515 次
发布时间:2019-06-08

本文共 2905 字,大约阅读时间需要 9 分钟。

  • 1.发送Send
    • 创建DatagramSocket, 随机端口号
    • 创建DatagramPacket, 指定数据, 长度, 地址, 端口
    • 使用DatagramSocket发送DatagramPacket
    • 关闭DatagramSocket
  • 2.接收Receive
    • 创建DatagramSocket, 指定端口号
    • 创建DatagramPacket, 指定数组, 长度
    • 使用DatagramSocket接收DatagramPacket
    • 关闭DatagramSocket
    • 从DatagramPacket中获取数据
  • 3.接收方获取ip和端口号
    • String ip = packet.getAddress().getHostAddress();
    • int port = packet.getPort();

 


UDP传输优化

  • 接收端Receive
  •  
    DatagramSocket socket = new DatagramSocket(6666);                       //创建socket相当于创建码头DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);       //创建packet相当于创建集装箱while(true) {    socket.receive(packet);                                             //接收货物     byte[] arr = packet.getData();    int len = packet.getLength();    String ip = packet.getAddress().getHostAddress();    System.out.println(ip + ":" + new String(arr,0,len));}
     

     

     
  • 发送端Send

     
    DatagramSocket socket = new DatagramSocket();       //创建socket相当于创建码头Scanner sc = new Scanner(System.in);while(true) {    String str = sc.nextLine();    if("quit".equals(str))        break;    DatagramPacket packet =                             //创建packet相当于创建集装箱            new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 6666);    socket.send(packet);            //发货}socket.close();
     

     

     

 


 

UDP传输多线程

发送和接收在一个窗口完成

 
public class Demo_MoreThread {    /**     * @param args     */    public static void main(String[] args) {        new Receive().start();        new Send().start();    }}class Receive extends Thread {    public void run() {        try {            DatagramSocket socket = new DatagramSocket(6666);                   //创建socket相当于创建码头            DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);   //创建packet相当于创建集装箱            while(true) {                socket.receive(packet);                                             //接收货物                byte[] arr = packet.getData();                int len = packet.getLength();                String ip = packet.getAddress().getHostAddress();                System.out.println(ip + ":" + new String(arr,0,len));            }        } catch (IOException e) {            e.printStackTrace();        }    }}class Send extends Thread {    public void run() {        try {            DatagramSocket socket = new DatagramSocket();       //创建socket相当于创建码头            Scanner sc = new Scanner(System.in);            while(true) {                String str = sc.nextLine();                if("quit".equals(str))                    break;                DatagramPacket packet =                             //创建packet相当于创建集装箱                        new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 6666);                socket.send(packet);            //发货            }            socket.close();        }  catch (IOException e) {            e.printStackTrace();        }    }}
 

 

 

转载于:https://www.cnblogs.com/loaderman/p/6411254.html

你可能感兴趣的文章
第三次作业结对编程
查看>>
Andorid Volley加载网络图片, 每次都会重新加载的问题
查看>>
php+layui数据表格实现数据分页渲染
查看>>
POJ-1077/HDU-1043
查看>>
pronunciation from Longman 2
查看>>
将数组排序组成最小的整数
查看>>
sqlserver学习--1(登陆,时间函数,查看表结构,查看建表语句,IDENTITY() 函数,查询表名称,查询表结构)...
查看>>
MYSQL 日期函数
查看>>
Oracle触发器之替代触发器
查看>>
NodeJS基础教程之一
查看>>
你真的了解SDWebImage吗?
查看>>
BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+数论分块)
查看>>
C#嵌套类
查看>>
2017《面向对象程序设计》课程作业三
查看>>
[HDU] 1068 Girls and Boys(二分图最大匹配)
查看>>
ADO.NET类的模型关系图
查看>>
SRM 604 DIV2 250
查看>>
python中异常处理之esle,except,else
查看>>
看苹果官方API
查看>>
06-基础-系统指令-v-model-语法糖原理
查看>>