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#中,使用System.Net.Sockets命名空间下的UdpClient类可以方便地实现UDP通信。首先创建UdpClient实例,然后通过ReceiveAsync或Send方法分别实现数据的接收和发送。例如: ```csharp using System.Net; using ...
Qt是一个跨平台的C++图形用户界面应用程序开发框架,它提供了丰富的API来支持UDP通信。下面将详细介绍如何使用Qt实现UDP的发送与接收。 首先,理解UDP通信的基本概念。UDP协议不保证数据包的顺序、完整性和可靠性,...
本示例将详细介绍如何使用C++来实现UDP通信。 首先,我们要理解UDP的基础概念。UDP不提供像TCP那样的连接建立和维护,它不保证数据包的顺序到达,也不处理重传,因此,UDP通信通常比TCP更快,但可靠性较低。在C++中...
《S7-1200 PLC与调试助手的UDP通信技术详解》 在工业自动化领域,SIMATIC S7-1200系列PLC(可编程逻辑控制器)因其高效、灵活和易于编程的特点,被广泛应用于各种控制系统中。在本资料中,我们将深入探讨如何利用...
其支持多种通信协议,包括以太网/IP、DH+、DH485等,而UDP通信则属于其网络通信的一种方式。在AB PLC中实现UDP通信通常涉及到编程和配置两个方面: 1. 编程:在AB PLC中,我们通常使用RSLogix 5000编程软件进行逻辑...
在C#中,我们通常使用System.Net.Sockets命名空间中的UdpClient类来处理UDP通信。 首先,我们需要创建两个WinForm应用程序,分别代表UDP通信的两个节点,我们称它们为UDP Host A和UDP Host B。这两个程序都需要包含...
本项目"NetSocketTest"旨在提供一个基础的参考,涵盖了C# WinForm环境下TCP和UDP通信的实现,以及使用VS2017开发工具和.NET 4.0框架。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流...
首先,我们要了解UDP通信的基本原理。UDP通信涉及两个主要部分:发送端和接收端。发送端负责封装数据到UDP数据报中,并通过套接字接口发送到网络;接收端则监听特定的端口号,接收到数据后进行解封装并处理。 在VC6...
X-Plane11_UDP通信的说明文档(中文) X-Plane 11 是一款飞行模拟器,使用 UDP 通信协议与外部应用程序交互。为了帮助用户更好地理解和使用 X-Plane 11 的UDP通信功能,本文档将详细介绍 X-Plane 11 的UDP通信机制...
要使用CSocket进行UDP通信,我们需要创建一个CSocket对象,并设置其为UDP模式。以下是一些关键步骤: 1. **初始化Winsock**:在程序开始时,调用AfxSocketInit函数初始化Winsock库,确保网络功能可用。 2. **创建...
在Android开发中,UDP通信是一种常见且高效的数据传输方式,特别是在局域网内进行设备间的快速通信。本示例主要探讨如何在Android应用中利用UDP(User Datagram Protocol)实现与PC端服务程序的通信,包括发送UDP...
UDP通信类CUDP是针对UDP协议实现的一种通信类,它为开发者提供了在Windows环境下(如Visual Studio 2008到2012)进行UDP通信的便捷接口。UDP(User Datagram Protocol)是一种无连接的、不可靠的传输层协议,它的...
【基于VS2010的UDP通信程序】是一个利用Visual Studio 2010开发的示例项目,展示了如何在Windows环境下实现基于UDP(User Datagram Protocol)的网络通信。UDP是一种无连接的传输层协议,它不像TCP那样提供可靠的、...
在C#编程环境中,利用Visual Studio 2008开发UDP通信协议的例子,可以深入理解网络编程的基本原理。 首先,UDP通信的核心在于`System.Net.Sockets`命名空间中的`UdpClient`类。这个类提供了发送和接收UDP数据报的...
在C#编程中,我们可以利用System.Net.Sockets命名空间中的UdpClient类来实现UDP通信。 1. UDP的特点: - **无连接**:UDP在发送数据之前不需要建立连接,因此可以快速发送数据,但同时也意味着没有确认接收方是否...
在本文中,我们将深入探讨如何在STM32F103单片机上实现W5500芯片的UDP通信。W5500是一款集成SPI接口的以太网控制器,它提供了完整的TCP/IP协议栈,包括UDP(用户数据报协议),这使得嵌入式系统能够方便地进行网络...
首先,让我们了解基于Qt的UDP通信的基本概念。在Qt中,我们可以使用QSocket类来处理UDP通信。QSocket是Qt网络模块的一部分,提供了低级别的网络通信功能,包括TCP和UDP。对于UDP,我们需要使用QUdpSocket类。 1. **...
UE5 TCP/UDP通信插件 SimpleUDPTCPSocketClientUE5 TCP/UDP通信插件 SimpleUDPTCPSocketClientUE5 TCP/UDP通信插件 SimpleUDPTCPSocketClientUE5 TCP/UDP通信插件 SimpleUDPTCPSocketClientUE5 TCP/UDP通信插件 ...
Socket UDP通信是网络编程中的一个重要概念,主要用于实现进程间的异步、无连接的数据传输。UDP(User Datagram Protocol)是一种无连接的、不可靠的传输层协议,与TCP(Transmission Control Protocol)相比,它更...
在开始深入探讨MFC中UDP通信的实现之前,我们首先要理解TCP与UDP在网络通信中的区别。TCP协议是一种面向连接的、可靠的传输层协议,它提供了错误检测和确认机制,确保数据包能够准确、有序地到达目的地。因此,TCP在...