`
158067568
  • 浏览: 327000 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

UDP发送数据报

阅读更多

UDP发送数据报

作者:legend

QQ158067568

ok,继续我的毕设之旅,之前简单介绍了UDP单播、广播与多播,但是不管采用单播还是广播,基本代码都不大致相同。而其发送UDP数据报的地方很多。所以需要写一个工具类,来帮助发送udp数据报。

分析

首先,该类是一个榜首类,在使用它是应该做到不需要任何人的引用,只需要知道你要发送的内容

、发送的目的地的ip地址及其端口号就可以实例化。

其次,该类不应该与调用程在一个线程同,不然会影响调用线程的响应情况。

实现

有了这两条知道思想,那么在设计该类是应该做到如下:

首先其构造方法中应该给出udp传送的目的地ip地址及其端口号,和待发送的内容。

其次,该类应该自己在一个线程中,即他需要继承thread类或者实现runnable接口。

编码

package cn.edu.heut.helper;
 
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
/**
 * 该类相当于一个帮手类,帮助发送udp数据包
 * @author LEGEND
 *
 */
public class UDPSendHelper extends Thread{
         /**
          * 发送者的套接字
          */
         private DatagramSocket sendSocket ;
         private DatagramPacket sendPacket ;
         /**
          * 待发送的内容
          */
         private String data ;
         /**
          * 待发送的目的地址
          */
         private InetAddress destIPAddress ;
         /**
          * 目的地端口号
          */
         private int destPort ;
         /**
          * 实例化发送udp助手类
          * @param data 发送的数据
          * @param destIPAddress 目的地ip地址
          * @param destPort 目的地端口号
          */
         public UDPSendHelper(String data, InetAddress destIPAddress,
                            int destPort) {
                   this.data = data;
                   this.destIPAddress = destIPAddress;
                   this.destPort = destPort;
                   sendPacket = new DatagramPacket(data.getBytes(),data.getBytes().length,destIPAddress,destPort);//初始化数据报
         }
        
         @Override
         public void run() {
                   try {
                            sendSocket = new DatagramSocket() ;
                            sendSocket.send(sendPacket);//发送
                   } catch (SocketException e) {
                            e.printStackTrace();
                   } catch (IOException e) {
                            e.printStackTrace();
                   }
                   sendSocket.close();
         }
        
}
 

注:相关代码我会在之后随着程序的其他代码一同给出。

 

1
0
分享到:
评论
6 楼 wangyezidong 2013-04-18  
zjdxsunyan 写道
版主你好,android能不能广播udp呀,就是目的地址是255.255.255.255,让多个电脑收到。我试了下模拟器,怎么不行呢。是不是android不支持255.255.255.255。同样的一类在java普通项目中能够发送成功。这是什么原因呢?

请问android向每个主机发送广播后,怎么接收每个主机的返回呢
5 楼 蓝月儿 2012-08-13  
请问发送和接受广播的通道需要是一个吗?就是创建的DatagramSocket对象需要是一个吗?还有就是传送和接收数据的数据结构需要是同一个吗?谢谢
4 楼 zjdxsunyan 2012-04-21  
版主你好,android能不能广播udp呀,就是目的地址是255.255.255.255,让多个电脑收到。我试了下模拟器,怎么不行呢。是不是android不支持255.255.255.255。同样的一类在java普通项目中能够发送成功。这是什么原因呢?
3 楼 renmin520 2012-02-20  
希望版主能给一个DEMO的代码
谢谢
2 楼 beitielis 2011-08-17  
我也在弄这个,如果能共享源码的话,也发给我一份吧,谢谢了!
我的邮箱是: beautyxiangxiang@gmail.com
1 楼 zhangdongqian 2011-07-14  
版主,我最近也在弄这个,能否共享一下源码呢?我的邮箱是:zdqcgy@163.com,谢谢了!

相关推荐

    Qt UDP定时发送数据报并实现计数

    代码实现的是qt定时发送udp数据包 并实现发送的数据包计数与反馈的数据包计数 进行对比 确认网络的稳定性以及是否有丢包现象

    使用MATLAB实现UDP广播数据报

    UDP使用地址“255.255.255.255”进行局域网广播,定时每10秒发送一次数据报,数据包内容为当前电脑的日期和时间

    易语言UDP数据报服务

    易语言UDP数据报服务源码,UDP数据报服务,启动新线程,子程序2,Bind,Close,Sendto,Recvfrom,Socket_WSAStartup,Socket_WSACleanup,Socket_UDP,Socket_Bind,Socket_接收数据报,Socket_发送数据报,WSASetLastError,...

    udp文件传输发送端源代码

    udp文件传输发送端源代码,每次数据报的大小可调,不丢包,ip地址,端口号,文件名需要自己设置

    基于Java实现de UDP数据传输,双向传输,接收端和发送端,服务器

    UDP是面向非连接的,UDP传输的是数据报只负责传输信息,不保证信息一定收到,虽然安全性不如TCP(面向连接、用Socket进行通信),但是性能较好。 从简单到复杂,首先简单介绍一下怎么利用UDP实现客服端发送消息给...

    electron-udp:一个简单的电子应用程序,用于创建 UDP 客户端和服务器以发送和接收数据报

    一个简单的电子应用程序,用于创建 UDP 客户端和服务器以发送和接收数据报。 您可以在任何主机和端口上添加 N 个 UDP 客户端,在任何主机和端口上添加 N 个 UDP 服务器。 您还可以生成随机数据并以固定时间间隔从...

    UDP单播 、组播、广播,使用Qt实现,工程文件包,下载解压缩直接导入工程即可

    UDP是轻量的、不可靠的、面向数据报、无连接的协议,它可以用于对可靠性要求不高的场合,和TCP通信不同,两个程序之间进行UDP通信无需预先建立持久的socket连接,UDP每次发送数据报都需要指定目标地址和端口。...

    计算机网络技术-UDP协议分析教程

    1)、UDP 是无连接的,即发送数据之前不需要建立连接,发送数据之后也没有连接可释放,因此减小了开销和发送数据之前的时延。 2)、UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。

    udp通信协议

    udp通信设计UDP协议,即拥护数据报协议(Use Datagram Protocol).是一个简单的面向数据报的传输层协议.他不提供可靠性,即只把应用程序传给IP层的数据发送出去,但是并不能保证他们能到达目的.Send to( )适用于已连接的...

    UDP单播发送与接收.c

    UDP单播,发送与接收(代码)详细介绍。单播流程:主机A向主机B发送UDP数据报,发送的目的IP为192.168.1.151,端口为 80,此数据经过UDP层、IP层,到达数据链路层,数据在整个以太网上传播。

    C# 学习UDP通讯

    //调用UdpClient对象的Send方法将Udp数据报发送到远程主机 udpclient.Send(sendBytes, sendBytes.Length); //实例化IPEndPoint对象,用来显示响应主机的标识 IPEndPoint ipendpoint = new IPEndPoint(IPAddress....

    UDP.rar_C++多播_udp 组广播_udp协议

    信息简介:UDP协议,即拥护数据报协议(Use Datagram Protocol).是一个简单的面向数据报的传输层协议.他不提供可靠性,即只把应用程序传给IP层的数据发送出去,但是并不能保证他们能到达目的.广播和多播是基于UDP协议的两...

    TCP/IP协议详解_011(UDP:用户数据报协议)

    U D P是一个简单的面向数据报的运输层协议:进程的每个输出...数据报,并组装成一份待发送的I P数据报。 这与面向流字符的协议不同,如T C P,应用 程序产生的全体数据与真正发送的单个I P数 据报可能没有什么联系。

    UDP协议中的 UDP Flood 攻击详细讲解

    UDP协议是一种无连接的协议,不提供数据报的分组、组装,不对数据包的传输进行确认,当报文发送出去后,发送端不关心报文是否完整的到达对端。这个听起来像是缺点的特点,却是UDP协议最大的优点。这种报文处理方式...

    嵌入式系统/ARM技术中的UDP数据报传输的软件设计

    UDP数据报传输的关键部分是处理packetRAM[]中的内容,packetRAM用来存储网络中收到的数据,以及发送到网络中的数据,因为程序是顺序执行的,所以收到的数据和发送的数据没有重叠的情况。在packetRAM[]中的数据是...

    Qt5网络编程之UDP协议---实例

    UDP(User Datagram Protocol即...下面我们将编写两个程序,一个用来发送数据报,可以叫做客户端;另一个用来接收数据报,可以叫做服务器端,它们均应用UDP协议。这样也就构成了所谓的C/S(客户端/服务器)编程模型。

    python实现udp数据报传输的方法

    #从给定的端口,从任何发送者,接收UDP数据报 s.bind((,port)) print 'waiting on port:',port while True: data,addr = s.recvfrom(1024) #接收一个数据报(最大到1024字节) print 'reciveed:',

    udp概述、原理及应用.pdf

    它不像TCP那样提供复杂的连接建立、数据确认和重传机制,而是直接发送数据报,无需等待对方的响应或确认。这种设计理念使得UDP具有较低的开销和较高的传输效率。 工作方式: UDP是一种无连接的协议,它在发送数据...

Global site tag (gtag.js) - Google Analytics