首页 > 编程语言 >网络编程-UDP通信程序

网络编程-UDP通信程序

时间:2023-04-21 11:55:05浏览次数:35  
标签:DatagramSocket UDP DatagramPacket java 编程 通信 new import dp

网络编程-UDP通信程序

InetAddress address = InetAddress.getByName("Dinesaw");
System.out.println("主机名:" + address.getHostName());
System.out.println("IP地址:" + address.getHostAddress());

UDP发送数据

  • Java中的UDP通信

    • UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个Socket只是发送,接收数据的对象,因此对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器的概念
  • 构造:ds是快递公司,dp是快递包裹

  • 发送数据的步骤

    • 创建发送端的Socket对象(DatagramSocket)
    • 创建数据,并把数据打包
    • 调用DatagramSocket对象的方法发送数据
    • 关闭发送端
  • 代码演示

    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.nio.charset.StandardCharsets;
    
    public class sendme {
        public static void main(String[] args) throws IOException {
       
            DatagramSocket ds = new DatagramSocket();
    
            String str = "HELLO!";
            byte[] bytes =str.getBytes();
            InetAddress address = InetAddress.getByName("Dinesaw");
            int port = 10086;
            DatagramPacket dp = new DatagramPacket(bytes,bytes.length,address,port);
    
            ds.send(dp);
    
            ds.close();
        }
    }
    
    

UDP接收数据

  • 接收数据的步骤

    • 创建接收端的Socket对象(DatagramSocket)
    • 创建一个数据包,用于接收数据
    • 调用DatagramSocket对象的方法接收数据
    • 解析数据包,并把数据在控制台显示
    • 关闭接收端
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class saveme {
    public static void main(String[] args) throws IOException {
    
        DatagramSocket ds = new DatagramSocket(10086);
        
        //创建一个数据包,用于接收数据
        byte[] bys = new byte[1024];
        DatagramPacket dp = new DatagramPacket(bys, bys.length);

        ds.receive(dp);

        System.out.println("接收到的数据是:" + new String(dp.getData(), 0,dp.getLength()));
    }
}


UDP通信程序练习

  • 案例需求

    UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束

    UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收

  • 代码实现

  • saveme

    • import java.io.IOException;
      import java.net.DatagramPacket;
      import java.net.DatagramSocket;
      
      public class saveme {
          public static void main(String[] args) throws IOException {
      
              DatagramSocket ds = new DatagramSocket(10086);
      
              while (true) {
              //创建一个数据包,用于接收数据
              byte[] bys = new byte[1024];
              DatagramPacket dp = new DatagramPacket(bys, bys.length);
      
              ds.receive(dp);
                  System.out.println("接收到的数据是:" + new String(dp.getData(),0,dp.getLength()));
              }
      
          }
      }
      
  • sendme

    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.util.Scanner;
    
    public class sendme {
        public static void main(String[] args) throws IOException {
            
            DatagramSocket ds = new DatagramSocket();
            Scanner sc = new Scanner(System.in);
            while (true) {
                String s = sc.nextLine();
                //输入的数据是886,发送数据结束
                if ("886".equals(s)) {
                    break;
                }
                byte[] bys = s.getBytes();
                DatagramPacket dp = new DatagramPacket(bys, bys.length, InetAddress.getByName("Dinesaw"), 10086);
                ds.send(dp);
            }
            ds.close();
        }
    }
    
    

标签:DatagramSocket,UDP,DatagramPacket,java,编程,通信,new,import,dp
From: https://www.cnblogs.com/tupo/p/17339883.html

相关文章

  • 网络编程
    网络编程通信的要素ip端口号规则:网络通信的协议获取本地IP再这个类下InetAddresspublicstaticvoidmain(String[]args)throwsUnknownHostException{    InetAddressbyName1=InetAddress.getByName("127.0.0.1");    System.out.println(byN......
  • android系统adb对时//京鸿通信/www.kyohoon.com/15507589165
    目录1、远程连接设备2、设置地区3、设置对时服务器4、重启设备5、查看对时服务器是否设置成功1、远程连接设备adbconnectxxx.xxx.xxx.xxx2、设置地区adbshellsetproppersist.sys.timezoneAsia/Shanghai3、设置对时服务器adbshellsettingsputglobalntp_server172.16.......
  • shell/bash脚本编程
    原文地址zhuanlan.zhihu.comshell/bash脚本编程残枫cps​目录收起介绍我们的第一个脚本脚本解释器用户输入测试条件判断迭代语句-循环参数传递退出状态码逻辑操作符函数函数参数传递通配符调试原文地址zhuanlan.zhihu.com原文链接对于我自己来说,学习新框架或技术......
  • Android进程间的通信方式
    原文地址juejin.cn前言在日常的开发中,我们可能会接触到多进程,比如向外界提供服务,或者因为某些原因把某个操作分离到独立的进程执行等等。那么进程与进程之间没办法直接进行数据的传输,也就是我们常说的进程间通信,因此需要借助特定的方案,下面我们一起了解一下几种进程间通信的......
  • 深入理解Android进程间通信机制
    原文地址juejin.cnAndroid系统中有大量IPC(进程间通信)的场景,比如我们想要创建一个新的进程,需要通过Socket这种IPC方式去让ZygoteFork新进程;如果我们要杀掉一个进程,需要通过信号这种IPC方式去将SIGNAL_KILL信号传递到系统内核;如果我们想要唤醒主线程处于休眠中的Looper,需要管道......
  • Android进程间通信总结
    原文地址blog.csdn.netIPCIPC为(Inter-ProcessCommunication)缩写,称为进程间通信或跨进程通信,指两个进程间进行数据交换的过程。安卓中主要采用Binder进行进程间通信,当然也支持其他IPC方式,如:管道,Socket,文件共享,信号量等。Binder简介1.为什么使用Binder?性能方面:......
  • 新风格的信号通信
    #include"stdio.h"#include"signal.h"voidsig_handler(intsig){printf("接受到了%d号信号\n",sig);}voidsig_action(intsig,siginfo_t*siginfo,void*restrict_){//sig信号编号//siginfo信号信息//restrict_预留函数......
  • Hibernate 教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用J......
  • PHP 教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介PHP开发入门教程-一个简单而简短的PHP教程和所有内置PHP函数的完整参考手册。本教程是为初学者和高级开发人员设计的。您将了解PHP内置函数,预定义变量示例,面向对象的PHP,数字,标量,数组,散列文件I/O,IF,ELSEIF,执行,循环,运算符,正则表达式,GET,POST,子程序,编码标准,模块,文件管理,套......
  • 编程打卡:C语言趣味编程习题做
    编程打卡:C语言趣味编程习题做求车速问题描述已知一个对称数里程数,2小时之后它又变成了一个对称数,求速度。设计思路很明显看出来95859的下一个对称数是95959,再下一个对称数是96069,不,还是每次增加,然后再判断对称数吧。流程图graphA[开始]-->B[i=95859+1]-->C[i++]-->D{i......