UDP发送数据报
作者:legend
QQ:158067568
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();
}
}
注:相关代码我会在之后随着程序的其他代码一同给出。