UDP通信,发送端发送数据,接受端接收数据,发送端发送数据不需要知道客户端接受与否的方式,比TCP通信的方式简单很多,下面是我的写的一个小例子
UDP的发送端:
/**
* UdpServer.java V1.0 2012-5-9 下午4:58:54
*
* Copyright Lizhenbin Co. ,Ltd. All rights reserved.
*
* Modification history(By Time Reason):
*
* Description:
*/
package com.lzb.common.socket;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UdpSender {
private static UdpSender instance = null;
public UdpSender() {};
public static synchronized UdpSender getInstance() {
if(instance == null)
instance = new UdpSender();
return instance;
}
/**
*
* 功能描述:UDP发送数据报文,这里只发送字符串的形式,每次发送不超过1024个字节
*
* @author lizhenbin
* <p>创建日期 :2012-5-9 下午5:26:17</p>
*
* @param msg 发送的内容
* @param iphost 发送的目标ip地址
* @param port 发送的端口
* @return 成功:ture, 失败:false;
*
* <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
*/
public boolean send(String msg, String iphost, String port) {
if(msg==null || msg.equals("")) {
System.out.println("Usage: UDP Sender Message is Null.");
return false;
}
if(iphost==null || iphost.equals("")) {
System.out.println("Usage: UDP Sender IP host is Null.");
return false;
}
if(port==null || port.equals("")) {
System.out.println("Usage: UDP Sender Listener Port is Null.");
return false;
}
DatagramSocket dsocket = null;
try {
dsocket = new DatagramSocket();
byte[] bytes = new byte[1024];
bytes = msg.getBytes();
int msgLength = msg.getBytes().length;
InetAddress senderIp = InetAddress.getByName(iphost);
DatagramPacket dpacket = new DatagramPacket(bytes, msgLength, senderIp, Integer.valueOf(port));
dsocket.send(dpacket);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
dsocket.close();
}
}
// public static void main(String[] args) {
//
// UdpSender sender = UdpSender.getInstance();
// String msg = "Hello World.";
// String iphost = "127.0.0.1";
// String port = "3000";
// sender.send(msg, iphost, port);
// }
}
UDP的接收端:
/**
* UdpReceiver.java V1.0 2012-5-9 下午5:24:02
*
* Copyright Lizhenbin Co. ,Ltd. All rights reserved.
*
* Modification history(By Time Reason):
*
* Description:
*/
package com.lzb.common.socket;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UdpReceiver {
private static UdpReceiver instance = null;
public UdpReceiver() {};
public static synchronized UdpReceiver getInstance() {
if(instance == null)
instance = new UdpReceiver();
return instance;
}
/**
*
* 功能描述:UDP接收端
*
* @author lizhenbin
* <p>创建日期 :2012-5-9 下午5:38:16</p>
*
* @param port 端口号
* @return 数据包信息(DatagramPacket)
*
* <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
*/
public DatagramPacket receive(String port) {
if(port==null || port.equals("")) {
System.out.println("Usage: UDP Receiver Listener Port is Null.");
return null;
}
DatagramSocket dsocket = null;
try {
dsocket = new DatagramSocket(Integer.valueOf(port));
// 设置每次接受的最大字节数
byte[] msgBytes = new byte[1024];
DatagramPacket dpacket = new DatagramPacket(msgBytes, 1024);
dsocket.receive(dpacket);
return dpacket;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
dsocket.close();
}
}
// public static void main(String[] args) {
//
// UdpReceiver receiver = UdpReceiver.getInstance();
// DatagramPacket dpacket = receiver.receive("3000");
//
// String msg = new String(dpacket.getData(), 0, dpacket.getLength());
// String ipHost = dpacket.getAddress().getHostName();
// String rport = String.valueOf(dpacket.getPort());
// System.out.println("--->Receive Msg: " + msg + " From IP Host: " + ipHost + " Port: " + rport);
//
// }
}
分享到:
相关推荐
C++ UDP demo,实现UDP通信
这是一个UDP协议通信的程序! 这是一个UDP协议通信的程序!
采用UDP通信的Qt程序,当接收方与发送方正常连接发送报文后,本地定时器自动发送,当中断发送方发送时,接收方仍然有空报文接收到: 接收报文原程序: QByteArray datagram; datagram.resize(udpSocket->...
AB-PLC】UDP 通信程序 UDP_COM_V30.rar。 仅供学习,【AB-PLC】UDP通信程序UDP_COM_V30.rar【 AB PLC
udp通信
用C# 编写winform程序,实现UDP一对一通信。在socket编程中UDP不需要进行连接,只要知道对方的IP和端口就能进行通信。UDP通信没有服务器和客户端之分,每台主机都是平等的。
资源名:VB实现UDP通信程序源码 包含客户端和服务器端 资源类型:程序源代码 源码说明: 用VB实现UDP通讯,有客户端和服务器端。 并且对接收到的数据进行简单处理,为了便于和上位机通讯,并在VB界面上显示处理后的...
TCPServer tcpClient udp通信,定时发送,hex字符普通字符 收发...等功能,为基础参考项目
socket udp 通信例子 客户端 服务器端代码
MATLAB与DSP进行UDP通信的简单程序,相当于一个网口调试助手,可以实时接收DSP发送的报文并进行解析。
一个udp通信的类,接收可以使用消息相应或回掉函数两种方式。在vs2008-vs2012,环境下测试通过。接收数据:支持消息响应和回调函数
自己用C#编写的UDP通信协议例子,调试没问题,可用!
简单的UDP通信的C#小程序,简单的UDP通信的C#小程序,简单的UDP通信的C#小程序
该文件包含Labwindows/cvi TCP和UDP通信的实例程序
在linux下的udp通信,采用c语言编写,可实现简单的文件下载与上传,适用于初学者
TCP/UDP通信软件
单机上的双向udp通信。 在Qt中提供了QUdpSocket 类来进行UDP数据报(datagrams)的发送和接收。这里我们还要了解一个名词Socket,也就是常说的“套接字”。Socket简单地说,就是一个IP地址加一个port端口 。因为我们...
实现两台设备UDP通信,有服务端和客户端两个文件。
ESP32UDP通信 主要有服务器和客户端两部分 在服务器部分中,我们把ESP32配置为AP模式,便于其他ESP32直接接入此ESP32,无需开手机热点,或连接其他网络。 在客户端部分中,我们把ESP32配置为STA模式,直接接入到...
本软件实现了两台甚至多台电脑之间使用UDP通信的功能,包括单播,广播,组播的功能实现,三种发送方式的切换在代码中已标明。 默认状态为本机发送,本机接受,也就是接收端的ip地址设置为127.0.0.1,用户可根据实际...