精华内容
下载资源
问答
  • UDP协议发送和接收数据的步骤:发送:创建UDP发送端的Socket对象创建数据并把数据打包发送数据释放资源接收:创建UDP接收端的Socket对象创建数据包用于接收数据接收数据解析数据包释放资源快速获取本机IP地址的方法...

    不知道什么是Socket编程和UDP协议的自己去查资料。

    UDP协议发送和接收数据的步骤:

    发送:

    创建UDP发送端的Socket对象

    创建数据并把数据打包

    发送数据

    释放资源

    接收:

    创建UDP接收端的Socket对象

    创建数据包用于接收数据

    接收数据

    解析数据包

    释放资源

    快速获取本机IP地址的方法:打开dos命令窗口,输入ipconfig,回车

    使用多线程的目的是实现发送和接收都在一个窗口显示

    //这是发送类

    package UdpThreadPro;

    import java.net.DatagramPacket;

    import java.net.DatagramSocket;

    import java.net.InetAddress;

    import java.net.SocketException;

    import java.util.Dictionary;

    import java.util.Scanner;

    public class UdpSend implements Runnable {

    public void run() {

    try {

    //创建数据报包Socket对象,DatagramSocket这个类表示用来发送和接收数据报包的套接字

    DatagramSocket ds=new DatagramSocket();

    System.out.println("开始聊天吧");

    while(true){

    //从键盘输入

    Scanner s=new Scanner(System.in);

    //将键盘输入的值存入字符串a

    String a=s.nextLine();

    //如果键盘输入886,则退出循环,结束聊天

    if(a.equals("886")){

    break;

    }

    //将字符串转化成字节数组

    byte bytes[]=a.getBytes();

    //创建ip地址对象

    //InetAddress类没有任何构造方法,但是调用它的getByName方法可以返回一个InetAddress类对象

    InetAddress iar = InetAddress.getByName("192.168.1.128");

    //创建数据报包,包含要发送的字节组数,字节数组长度,发送端的ip地址对象以及端口

    DatagramPacket p=new DatagramPacket(bytes, bytes.length, iar, 2048);

    //发送数据报包

    ds.send(p);

    //清空字节数组,防止数据重叠

    bytes=null;

    }

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    }

    //这是接收类

    package UdpThreadPro;

    import java.io.IOException;

    import java.net.DatagramPacket;

    import java.net.DatagramSocket;

    import java.net.InetAddress;

    import java.net.SocketException;

    public class UdpReceive implements Runnable{

    @Override

    public void run() {

    try {

    //创建IP地址对象

    //InetAddress类没有任何构造方法,但是调用它的getByName方法可以返回一个InetAddress类对象

    InetAddress laddr = InetAddress.getByName("192.168.1.128");

    //创建数据报包Socket对象,指定该Socket的接口和IP地址,这样发送端才能找到指定的接收端

    DatagramSocket ds=new DatagramSocket(2048, laddr);

    while(true){

    //创建字符数组

    byte bytes[]=new byte[1024*1024];

    //创建数据报包接收数据

    DatagramPacket p=new DatagramPacket(bytes, bytes.length);

    //接收数据报包,包含收到的字节数组,实际长度,和发送方的 IP地址以及端口号**注意:此方法在接收到数据报包前一直阻塞

    ds.receive(p);

    //创建一个带长度的字节数组,p.getLength()表示接收到的数据的实际长度

    byte bytes2[]=new byte[p.getLength()];

    //解析数据

    bytes2=p.getData();

    //将字符数组转化成字符串,p.getLength()表示接收到的数据的实际长度

    String b=new String(bytes2, 0,p.getLength());

    //p.getAddress().getHostAddress()表示发送端的IP地址

    String a=p.getAddress().getHostAddress();

    //输出接收到的数据和发送端的ip地址

    System.out.println("from "+a+":"+b);

    //清空字节数组,防止数据重叠

    bytes2=null;

    }

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    }

    //这是测试类

    package UdpThreadPro;

    public class Test {

    public static void main(String[] args) throws InterruptedException {

    //创建接收端对象

    UdpReceive ur=new UdpReceive();

    //创建发送端对象

    UdpSend us=new UdpSend();

    //创建发送和接收线程

    Thread t1=new Thread(ur);

    Thread t2=new Thread(us);

    //启动线程

    t1.start();

    t2.start();

    }

    }

    展开全文
  • UDP简单发送和接收UDP协议用到的方法发送端接收端运行结果发送端接收端 UDP协议 UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个Socket对象只负责接收或发送,因此对于基于UDP协议...

    UDP协议

    UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个Socket对象只负责接收或发送,因此对于基于UDP协议的双方没有客户端和服务端的概念。

    用到的方法

    方法 类型 描述
    DatagramSocket() 构造 构造数据报套接字并绑定到本机地址的任意端口
    DatagramPacket(byte[] buf,int len) 构造 创建一个接收长度为len的数据包
    DatagramPacket(byte[] buf,int len,InetAddress add,int port) 构造 创建数据包,发送长度为len的数据包到指定主机的指定端口
    void send(DatagramPacket p) 普通 从此套接字发送数据包
    void close() 普通 关闭此数据报套接字
    void receive(DatagramPacket p) 普通 从此套接字接收数据包
    byte[] getData() 普通 返回数据缓冲区
    int getLenth() 普通 返回要发送的数据的长度或接收的数据的长度

    发送端

    //创键发送端Socket对象
        DatagramSocket ds = new DatagramSocket();
        //接收键盘录入信息
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //发送数据
        String line;
        while ((line = br.readLine()) != null) {
            byte[] bytes = line.getBytes();
            DatagramPacket dp = new DatagramPacket(bytes, bytes.length,InetAddress.getByName("127.0.0.1"),12345);
    
            if ("quit".equals(line)){
                break;
            }
    
            ds.send(dp);
        }
        ds.close();
    

    接收端

    //创键接收端Socket对象,指定端口号
        DatagramSocket ds = new DatagramSocket(12345);
        //一直接收数据
        while (true){
            //创建数据包接收数据
            byte[] bytes = new byte[1024];
            DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
            ds.receive(dp);
            System.out.println("收到: " + new String(dp.getData(),0, dp.getLength()));
        }
    

    运行结果

    发送端

    在这里插入图片描述

    接收端

    在这里插入图片描述

    展开全文
  • 用Visual C# UDP协议的实现,最为常用,也是最为关键的类就是UdpClient,UdpClient位于命名空间System.Net.Sockets中,Visual C# UDP数据包的发送接收都是通过UdpClient类的。表01表02是UdpClient类中常用方法和属性...

    Visual C# UDP数据的发送、接收包使用的主要类及其用法:

    用Visual C# UDP协议的实现,最为常用,也是最为关键的类就是UdpClient,UdpClient位于命名空间System.Net.Sockets中,Visual C# UDP数据包的发送、接收都是通过UdpClient类的。表01和表02是UdpClient类中常用方法和属性及其简要说明。

    方法 说明 Close 关闭 UDP 连接 Connect 建立与远程主机的连接 DropMulticastGroup 退出多路广播组 JoinMulticastGroup 将 UdpClient 添加到多路广播组 Receive 返回已由远程主机发送的 UDP 数据文报 Send 将 UDP 数据文报发送到远程主机。

    属性 说明 Active 获取或设置一个值,该值指示是否已建立了与远程主机的连接 Client 获取或设置基础网络套接字 表02:UdpClient类中常用方法及其说明。

    1.Visual C# UdpClient类发送UDP数据包:

    在具体使用中,一般分成二种情况:

    (1). 知道远程计算机IP地址:

    "Send"方法的调用语法如下:

    1. public int Send ( byte[] dgram , int bytes , IPEndPoint endPoint ) ;  

    参数说明:

    dgram 要发送的 UDP 数据文报(以字节数组表示)。

    bytes 数据文报中的字节数。

    endPoint 一个 IPEndPoint,它表示要将数据文报发送到的主机和端口。

    返回值 已发送的字节数。

    下面使用UdpClient发送UDP数据包的具体的调用例子:

    1. IPAddress HostIP = new IPAddress.Parse ( "远程计算机IP地址" ) ;   
    2. IPEndPoint host = new IPEndPoint ( HostIP , 8080 ) ;   
    3. UdpClient.Send ( "发送的字节" , "发送的字节长度" , host ) ;  

    (2). 知道远程计算机名称:

    知道远程计算机名称后,利用"Send"方法直接把UDP数据包发送到远程主机的指定端口号上了,这种调用方式也是最容易的,语法如下:

    1. public int Send ( byte[ ] dgram , int bytes , string hostname , int port ) ;  

    参数说明:

    dgram 要发送的 UDP 数据文报(以字节数组表示)。

    bytes 数据文报中的字节数。

    hostname 要连接到的远程主机的名称。

    port 要与其通讯的远程端口号。

    返回值 已发送的字节数。

    2.Visual C# UdpClient类接收UDP数据包:

    接收UDP数据包使用的是UdpClient中的“Receive"方法。此方法的调用语法如下:

    1. public byte [] Receive ( ref IPEndPoint remoteEP ) ;  

    参数说明:

    remoteEP 是一个 IPEndPoint类的实例,它表示网络中发送此数据包的节点。

    如果指定了远程计算机要发送到本地机的端口号,也可以通过侦听本地端口号来实现对数据的获取,下面就是通过侦听本地端口号“8080"来获取信息代码:

    1. server = new UdpClient ( ) ;   
    2. receivePoint = new IPEndPoint (new IPAddress ( "127.0.0.1" ) , 8080 ) ;   
    3. byte[] recData = server.Receive ( ref receivePoint ) ;  

    转载于:https://www.cnblogs.com/ZGQ-VIP/p/9628387.html

    展开全文
  • API ----网络编程 ----DatagramPacket类 ----InetAddress类 java.lang.Object 继承者 java.net.DatagramSocketpublic UDP编程速查速记:此类表示用来发送和接收数据报包套接字。构造方法:下面是所有构造方法...
    API ----网络编程 ----DatagramPacket类 ----InetAddress类

    java.lang.Object
    继承者 java.net.DatagramSocket

    public 

    UDP编程速查速记:

    此类表示用来发送和接收数据报包的套接字。

    构造方法:

    下面是所有的构造方法
    DatagramSocket

    成员方法:

    void 
    YuSLi:DatagramPacket类:数据包zhuanlan.zhihu.com

    UDP编程:

    a7227d0087959e2f09110759021dadc2.png
    UDP协议发送和接收数据图解.bmp
    • UDP发送和接收数据(初始版)
    • UDP发送和接收数据(改进版)
    • 从键盘录入数据进行发送,如果输入的是886那么客户端就结束输入数据
    • 使用广播地址进行广播
    • 把发送和接收程序分别用 线程进行封装,完成一个UDP的聊天程序
    • 老师写的服务器和客户端程序
    展开全文
  • UDP接收端 建立UDP接收端的思路 1.建立udp socket服务 2.创建数据包用于存储接收到的数据. 方便用数据包对象的方法解析这些数据. 3.使用socket服务的receive方法将接受的数据存储到数据包中. 4...
  • public class DatagramSocket:此类表示用于发送和接收数据报数据包的套接字 public final class DatagramPacket :该类表示数据报包 DatagramSocket类的两个方法: 1.void send (DatagramPacket p) 从此套接字发送...
  • UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法udp网络程序模型图。接下来,我们用 python 代码实现udp数据的发送和接收。一、udp网络程序,发送数据流程:创建客户端套接字发送数据关闭...
  • UDP协议发送数据: •创建发送Socket对象 •创建数据,并把数据打包 •调用Socket对象的发送方法,发送数据包 •释放资源 UDP协议接收数据: •创建接收Socket对象 •创建数据包接收数据(接收容器) •...
  • Udp发送和接收

    千次阅读 2014-10-21 20:06:59
    //UdpReceive.java /* 定义udp的接收端。 思路: 1.定义udpSocket服务。通常会监听一个端口,其实就是这个...3.通过Socket服务receive方法将收到数据存入已定义好的数据包中。 4.通过数据包对象特有功能将这
  • UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法udp网络程序模型图。接下来,我们用 python 代码实现udp数据的发送和接收。一、udp网络程序,发送数据流程:创建客户端套接字发送数据关闭...
  • UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法udp网络程序模型图。接下来,我们用 python 代码实现udp数据的发送和接收。一、udp网络程序,发送数据流程:创建客户端套接字发送数据关闭...
  • UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法udp网络程序模型图。接下来,我们用 python 代码实现udp数据的发送和接收。一、udp网络程序,发送数据流程:创建客户端套接字发送数据关闭...
  • UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法udp网络程序模型图。 接下来,我们用 python 代码实现udp数据的发送和接收。 一、udp网络程序,发送数据 流程: 创建客户端套接字 发送...
  • 我已经在互联网上搜索了一两个星期,现在找到一个可以同时发送和接收的UDP客户端程序,但c#这个主题没有任何内容 . 在过去几天里,我尝试使用接收线程创建UDP客户端 .发送UDP数据包效果很好,但程序无法接收...
  • 一、UDP协议(一)服务器端:步骤如下:1、创建接收端Socket对象2、创建一个接收数据包3、调用socket对象的接收数据方法4、解析数据包,并将其输出在控制台5、释放资源代码实现如下:public class ReceiveDemo {public...
  • UDP接收端缓冲区丢包问题

    万次阅读 2015-11-09 14:32:31
    实习项目需要用Winsock内核模式驱动提供sockets方法,,这...通过测试发现,发送端是相机,采用udp协议,发送的图像数据包有3428个,并且通过wireshark抓取到全部包,但是接收端只能接收到3000个包左右,出现了丢包
  • TCP和UDP的简单理解

    2019-10-17 17:46:20
    TCP协议是面向流发送的数据包是没有间隔,无保护消息边界,当使用Receive()方法接收数据时,从系统缓冲区全部存进数据缓冲区(定义的接收数组),里面可能包含了多包数据,如果接收数组字节小于此时系统...
  • 但是如果接收方不处于接收信息状态,发送出去的数据包就会丢失。convert()方法是用来转换字节数组基本类型。/*** 创建基于udp协议服务接受端* @author wxisme**/public class MyServer {public sta...
  • TCP和UDP

    2017-10-29 00:35:00
    UDP• 将数据及源目的封装成数据包中,不需要建立连接• 每个数据报大小在限制在64k内• 因无连接,是不可靠协议• 不需要建立连接,速度快 DatagramSocket与DatagramPacket 建立发送端,接收端。 建立数据包...
  • 在不久之前,大规模网络层DDoS攻击是不法分子首选,它们使用格式错误TCP和UDP数据包来大量攻击目标。但是随着时间推移,DDoS防护已经适应了这种大规模攻击,大多数运营商公共云供应商都能够提供针对网络层...
  • Java UDP通信

    2020-10-18 20:30:02
    TCP/IP协议的传输层除了一个TCP协议外,还有一个UDP协议。UDP协议是用户数据报协议的简称,它作用也是网络数据的传输。如何选择TCP协议UDP协议, UDP协议虽然有时不太可靠...如果是接收UDP数据包的话,先使用Datagra
  • //发送UDP数据包 byte[] data = Encoding.Default.GetBytes(msg); mySocket.SendTo(data, data.Length, SocketFlags.None, RemotePoint); } private void UpdateMsgTextBox(string msg) { //接收...
  • 接收和发送数据案例 先写接收端 //UDP协议接收数据: // A:创建接收端Socket对象 // B:创建一个数据包(接收容器) // C:调用Socke七对象的接收方法接收数据 // D:解析数据包,并显示在控制台 // E:釋放资源 package ...
  • 但是如果接收方不处于接收信息状态,发送出去的数据包就会丢失。 convert()方法是用来转换字节数组基本类型。 /** * 创建基于udp协议服务接受端 * @author wxisme * */...
  • UDP

    2016-03-20 17:53:00
    UDP将数据及源和目的封装成数据包中,不需要...UDP传输DatagramSocket(用来发送和接收数据报包套接字)与DatagramPacket(数据报包)。建立发送端,接收端。建立数据包。调用Socket发送接收方法。关闭Socket。...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 149
精华内容 59
关键字:

发送和接收udp数据包的方法