- 浏览: 442822 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (158)
- J2SE (15)
- c/c++ (17)
- linux & ubuntu (20)
- js (18)
- algorithm (21)
- android (1)
- software (3)
- svn (1)
- db (6)
- other (19)
- css (5)
- go (1)
- html 5 (3)
- computer science (1)
- php (3)
- 创业 (8)
- EJB & jboss (1)
- TDD (1)
- jsp & servlet (2)
- http, tcp & ip (2)
- hibernate (1)
- json (1)
- 乐 (2)
- ps (2)
- netbeans (1)
- extjs (2)
- eclipse (4)
- 项目管理 (1)
- varnish (2)
- study abroad (1)
- python (1)
- erlang (1)
- math (1)
- shell (1)
- assembly (4)
- lucene (1)
- web (1)
- http (1)
- tcp & ip (1)
最新评论
-
yiguxianyun:
...
css li 不换行 -
stdayong:
...
netbeans 中使用 maven -
程序猿_星:
为啥会中文乱码啊
servlet 以 gzip 格式返回数据 -
huanhuan519:
感谢分享~
gdb 调试工具 -
heyl1234:
写过些js,对css还不熟。谢谢~
css li 不换行
udp 概述
user datagram protocol , 用户数据报协议,
无连接的协议,发送端无法得知发送结果,
特点:
高效,
稳定性 & 可靠性 差,
udp 相关类:SocketAddress,DatagramPacket,DatagramSocket
------
1 SocketAddress
表示 socket 端口,即 ip:port,
SocketAddress 是 虚类,其实现类为 InetSocketAddress,
如:
InetSocketAddress isa = new InetSocketAddress("127.0.0.1", 29191);
------
2 DatagramPacket
用于表示 数据包,
属性:
* data
byte[] , 用于存储数据,包括 接受 和 发送的数据,
* address & port
表示了其 socket 地址,
* ...
*
如:
InetSocketAddress isa = new InetSocketAddress("127.0.0.1", 29191);
byte[] bsSd = { 12, 43, 67 };
DatagramPacket dpSd = new DatagramPacket(bsSd, bsSd.length);
dataPacket.setSocketAddress(isa);
------
3 DatagramSocket
用于 发送 & 接收 数据,
DatagramSocket 中数据的存储
DatagramSocket 使用 DatagramPacket 存储数据,包括 发送 和 接收,
方法:
* send()
发送
* receive()
接收
*
如:
InetSocketAddress isa = new InetSocketAddress("127.0.0.1", 29191);
// sender
byte[] bsSd = { 12, 43, 67 };
DatagramPacket dpSd = new DatagramPacket(bsSd, bsSd.length);
DatagramSocket dsSd = new DatagramSocket();
dpSd.setSocketAddress(isa);
dsSd.send(dpSd);
System.out.println("send:" + dpSd.getData()[0] + " ... ," + new Date());
------
例子:
* 发送数据
* 接收数据
------
user datagram protocol , 用户数据报协议,
无连接的协议,发送端无法得知发送结果,
特点:
高效,
稳定性 & 可靠性 差,
udp 相关类:SocketAddress,DatagramPacket,DatagramSocket
------
1 SocketAddress
表示 socket 端口,即 ip:port,
SocketAddress 是 虚类,其实现类为 InetSocketAddress,
如:
InetSocketAddress isa = new InetSocketAddress("127.0.0.1", 29191);
------
2 DatagramPacket
用于表示 数据包,
属性:
* data
byte[] , 用于存储数据,包括 接受 和 发送的数据,
* address & port
表示了其 socket 地址,
* ...
*
如:
InetSocketAddress isa = new InetSocketAddress("127.0.0.1", 29191);
byte[] bsSd = { 12, 43, 67 };
DatagramPacket dpSd = new DatagramPacket(bsSd, bsSd.length);
dataPacket.setSocketAddress(isa);
------
3 DatagramSocket
用于 发送 & 接收 数据,
DatagramSocket 中数据的存储
DatagramSocket 使用 DatagramPacket 存储数据,包括 发送 和 接收,
方法:
* send()
发送
* receive()
接收
*
如:
InetSocketAddress isa = new InetSocketAddress("127.0.0.1", 29191);
// sender
byte[] bsSd = { 12, 43, 67 };
DatagramPacket dpSd = new DatagramPacket(bsSd, bsSd.length);
DatagramSocket dsSd = new DatagramSocket();
dpSd.setSocketAddress(isa);
dsSd.send(dpSd);
System.out.println("send:" + dpSd.getData()[0] + " ... ," + new Date());
------
例子:
* 发送数据
package eric.udp.test; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.net.SocketException; import java.util.Date; import java.util.Random; public class UdpSender implements Runnable { private SocketAddress target; private DatagramPacket dataPacket; private DatagramSocket dataSender; public UdpSender() {} public UdpSender(SocketAddress target, DatagramPacket dataPacket, DatagramSocket dataSender) { this.target = target; this.dataPacket = dataPacket; this.dataSender = dataSender; } @Override public void run() { Random rd = new Random(); try { while (true) { Thread.sleep(1000); dataPacket.getData()[0] = (byte) rd.nextInt(127); dataPacket.setSocketAddress(target); dataSender.send(dataPacket); System.out.println("send:" + dataPacket.getData()[0] + " ... ," + new Date()); } } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } public static void main(String[] args) { try { byte[] bs = { 12, 43, 67 }; InetSocketAddress isa = new InetSocketAddress("127.0.0.1", 29191); DatagramPacket dp = new DatagramPacket(bs, bs.length); DatagramSocket ds = new DatagramSocket(); UdpSender sender = new UdpSender(isa, dp, ds); Thread t = new Thread(sender); t.start(); } catch (SocketException e) { e.printStackTrace(); } } public SocketAddress getTarget() { return target; } public void setTarget(SocketAddress target) { this.target = target; } public DatagramPacket getDataPacket() { return dataPacket; } public void setDataPacket(DatagramPacket dataPacket) { this.dataPacket = dataPacket; } public DatagramSocket getDataSender() { return dataSender; } public void setDataSender(DatagramSocket dataSender) { this.dataSender = dataSender; } }
* 接收数据
package eric.udp.test; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.net.SocketException; import java.util.Date; public class UdpReceiver implements Runnable { private SocketAddress source; private DatagramPacket dataPacket; private DatagramSocket dataReceiver; public UdpReceiver() {} public UdpReceiver(SocketAddress target, DatagramPacket dataPacket, DatagramSocket dataSender) { this.source = target; this.dataPacket = dataPacket; this.dataReceiver = dataSender; } @Override public void run() { while (true) { try { Thread.sleep(50); dataPacket.setSocketAddress(source); // 该方法将阻塞线程,不断监听,直到收到数据 dataReceiver.receive(dataPacket); System.out.println("receiver:" + dataPacket.getData()[0] + " ... ," + new Date()); } catch (InterruptedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { try { byte[] bs = new byte[100]; InetSocketAddress isa = new InetSocketAddress("127.0.0.1", 29191); DatagramPacket dp = new DatagramPacket(bs, bs.length); DatagramSocket ds = new DatagramSocket(); UdpReceiver receiver = new UdpReceiver(isa, dp, ds); Thread t = new Thread(receiver); t.start(); } catch (SocketException e) { e.printStackTrace(); } } public SocketAddress getSource() { return source; } public void setSource(SocketAddress source) { this.source = source; } public DatagramPacket getDataPacket() { return dataPacket; } public void setDataPacket(DatagramPacket dataPacket) { this.dataPacket = dataPacket; } public DatagramSocket getDataReceiver() { return dataReceiver; } public void setDataReceiver(DatagramSocket dataReceiver) { this.dataReceiver = dataReceiver; } }
------
发表评论
-
java: lib & classpath
2014-08-21 10:14 1123classpath, is the path to searc ... -
Scan classes with specified annotation under specified package
2014-08-05 13:41 2348Scan classes with specified a ... -
http - simple server & client
2014-01-10 11:53 3496Simple http server & clien ... -
Java proxy
2012-12-07 18:14 1681Java proxy proxy, a design ... -
Java lock & condition
2012-08-14 23:49 3307java Lock & Condition, p ... -
java udp 简单实现
2011-02-20 18:36 10208java udp 简单实现 ------ 代码: ... -
java 文件统计 工具类
2011-02-18 23:55 1396import java.io.File; import ... -
String StringBuilder StringBuffer "..." 4种的效率
2010-08-31 21:53 1506"..." +"..." ... -
统计 某目录下 文件中的 字符
2010-08-30 06:14 1144统计给定目录下,所有文件中的 行数、空格数、数字个数: ... -
多线程 通过 公共数据区 协调运行
2010-08-30 04:52 717多线程 通过 公共数据区 协调运行: 每个线程打印同1 ... -
面试题 - 刁钻
2010-08-28 11:34 1184记录下 遇到的 一些 刁钻 面试题: 嘿嘿 i++ & ... -
JDK版本不一样导致WTP项目错误
2010-04-08 11:06 1041转载自:http://xucons.iteye.com/blo ... -
class init & object creation
2010-03-19 13:31 906class init & object creatio ... -
String 中 equals() vs ==
2009-08-16 18:02 1085String 中的 equals() 和 == : equa ...
相关推荐
综上所述,"udp在ros中简单使用"涵盖了创建ROS UDP服务器和客户端节点,处理ROS消息与UDP数据流之间的转换,以及如何在ROS的框架内实现网络通信。这个主题涉及到ROS编程、网络编程和数据序列化等多个方面,对于实现...
标题中的“vfp udp简易通讯,有源码”指的是使用Visual FoxPro(VFP)编程语言实现的一个基于UDP协议的简单通信程序。UDP(User Datagram Protocol)是一种无连接的、不可靠的传输层协议,常用于实时数据传输,如...
UDP简易聊天室是一种基于用户数据报协议(User Datagram Protocol,UDP)实现的简单通信系统,主要功能包括用户上线、下线的通知,获取在线用户列表以及用户间的点对点聊天。以下将详细介绍这些功能及其背后的UDP...
在这个"UDP简单聊天程序示例"中,我们将探讨如何利用C#中的`UdpClient`类来实现一个简单的UDP聊天应用。 首先,我们要理解`UdpClient`类在.NET Framework中的作用。`UdpClient`是System.Net.Sockets命名空间下的一...
综上所述,"C#简单的Udp示例"应包含创建UdpClient对象、绑定到端口、发送和接收数据的完整流程,同时展示了UDP协议在C#环境下的应用。初学者可以通过此示例学习到基本的网络编程概念,以及如何在实际项目中使用Udp...
4. **多路复用**:UDP使用端口号区分不同的服务,允许多个应用程序同时使用同一网络连接。 在实际应用中,TCP常用于需要高可靠性的场景,如HTTP、HTTPS、FTP等;而UDP则适用于对实时性要求较高但可以容忍少量数据...
下面我们将深入探讨如何使用C#编写UDP简单通信程序。 1. **创建UdpClient对象** 在C#中,首先需要创建一个UdpClient对象,这将用于发送和接收数据。例如: ```csharp UdpClient udpClient = new UdpClient(); `...
在这个Java实现的UDP简易客户端与服务器端程序中,我们可以通过两个核心文件——UDPClient.java和UDPServer.java来理解其工作原理。 首先,让我们来看看`UDPServer.java`。服务器端通常负责监听特定的端口,接收...
UDP(User Datagram Protocol)是互联网协议族中的一种无连接、不可靠的传输协议,与TCP(Transmission Control Protocol)相比,它的设计更为简单,主要适用于对实时性要求高的应用,如在线游戏、视频会议等。...
在这个“UDP简单文件传输”项目中,开发人员利用MFC(Microsoft Foundation Classes)库创建了一个用户界面,MFC是微软提供的一个C++类库,用于构建Windows应用程序,它简化了图形用户界面的编程工作。通过MFC,...
【Matlab UDP简单通讯实现】 在信息技术领域,UDP(User Datagram Protocol)是一种无连接的传输层协议,常用于需要高效传输且对数据完整性要求不高的应用。Matlab作为一个强大的数值计算和数据分析工具,也提供了...
在基于UDP的简单聊天系统中,我们将重点讨论如何利用UDP协议进行数据通信,以及在VC++环境中实现这样的系统。 首先,理解UDP的特点至关重要。与TCP(Transmission Control Protocol)不同,UDP不建立连接,没有握手...
"C# UDP,TCP简单例子"这个项目为初学者提供了一个很好的起点,让他们能够理解如何在C#中使用UDP和TCP进行网络通信。通过学习这个项目,开发者不仅可以了解基本的网络通信概念,还能掌握如何在实际应用中实现这些...
下面是一个简单的Qt UDP通信的客户端和服务端示例: 1. **服务端(Server)** - 首先,创建一个QUdpSocket实例并绑定到特定的IP地址和端口号,例如: ```cpp QUdpSocket serverSocket; serverSocket.bind...
UDP套接字编程相较于TCP更为简单,因为UDP不需要建立连接,也不需要进行握手确认。服务器端不需要使用listen函数监听连接请求,客户端也不需要使用connect函数来建立连接。相反,服务器端可以使用recvfrom函数来接收...
### 使用`UdpClient`实现简单收发器 创建一个简单的UDP收发器通常包括以下步骤: 1. 创建`UdpClient`实例,可以指定本地监听的端口号,如果不指定,则会随机分配一个可用的端口。 2. 设置发送数据的目标地址和端口...
一个简单的UDP发送示例如下(以Python为例): ```python import socket # 创建UDP套接字 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定本地地址 server_address = ('localhost', 12345) sock...
为了调试和测试,你可能需要编写一个简单的单片机模拟器或者使用网络工具(如Wireshark)来监控UDP通信。确保Json数据能够正确地序列化、发送和接收,这对于理解整个通信过程至关重要。 总结,使用C#编写上位机并...
本篇将深入讲解如何在J2ME环境中实现一个简单的UDP连接,包括服务器端(Server)和客户端(Client)的编程。 首先,我们来看`Server.java`。服务器端通常负责监听特定的端口,接收客户端发送的数据,并可能向客户端...
VB6中的Socket控件(MSComm32.OCX)提供了一种简单的方式来处理TCP/IP和UDP通信。通过设置Socket控件的相关属性和方法,我们可以轻松实现UDP广播功能。 3. **设置Socket控件**: - **Protocol属性**:设置为2表示...