- 浏览: 1225206 次
- 性别:
- 来自: 荆州
文章分类
- 全部博客 (396)
- Android 基础 (72)
- Java 基础 (42)
- Android(动画效果) (26)
- Android(自定义组件) (13)
- Android(手机服务) (38)
- Android(网络相关) (27)
- Android(多媒体) (12)
- Android(小技巧) (30)
- Android(用户界面) (39)
- 基础概念 (24)
- Android组件学习 (21)
- Android数据库相关 (11)
- 生活杂谈 (10)
- 调试技巧部分 (8)
- Sql Server相关 (1)
- Android(xml相关) (2)
- Android 开发 (12)
- 韩语学习 (4)
- Mac添加环境变量的三种方法 (1)
- iPhone开发 (1)
- Android Studio (1)
最新评论
-
ppfbsar:
下载网络文件到SD卡上 -
851228082:
好文!彻底理解单类型导入与按需导入的区别了。还有一点可以通过 ...
谈java的导入(import) -
麦田的设计者:
老乡啊
sqlite 数据库保存图片 -
sf_dream:
我要是读写list、map之类的集合呢
ObjectOutputStream和ObjectInputStream类的学习 -
xfyunyun:
博主,请问webview加载html字符串时怎么进行缓存处理呢 ...
WebView使用总结2(加载HTML内容形式的String)
直接贴上代码:
客户端:
服务器端:
最后说一句:此时服务器端的循环只有10次,在接受了10次数据后,Server端就不能接受到数据了.这个要注意一下.更详细点得描述,可以浏览这个地址:
http://hxdawxyhxdawxy.iteye.com/blog/1291266
总结一下:
客户端与服务器端的唯一区别在于:服务器所在IP地址、端口是固定的,所以客户端可以直接将该数据报发送给服务器,而服务器则需要根据接收到的数据报来决定将"反馈"数据报的目的地.
客户端:
package com.example; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Scanner; public class UdpClient { /** 定义发送数据报的目的地. */ public static final int DEST_PORT = 30000; public static final String DEST_IP = "127.0.0.1"; /** 定义每个数据报的最大大小为4K */ private static final int DATA_LEN = 4096; /** 定义该客户端使用的DatagramSocket,它的唯一作用就是接收和发送数据 报. */ private DatagramSocket mSocket = null; /** 定义接收网络数据的字节数组 */ byte[] inBuff = new byte[DATA_LEN]; /** 以指定字节数组创建准备接受数据的DatagramPacket对象. Java使用 DatagramPacket来代表数据报. */ private DatagramPacket inPacket = new DatagramPacket(inBuff, inBuff.length); /** 定义一个用于发送的DatagramPacket对象 */ private DatagramPacket outPacket = null; public void init() throws IOException { try { /** * DatagramSocket(): * <p> * 创建一个DatagramSocket实例,并将该对象绑定到 本机默认IP地址、本机所有可用端口中随机选择的 某个端口。 * <p> * DatagramSocket(int prot): * <p> * 创建一个DatagramSocket实例,并将该对象绑定到 本机默认IP地址、指定端口。 * <p> * DatagramSocket(int port, InetAddress laddr): * <p> * 创建一个DatagramSocket实例,并将该对象绑定到 指定IP地址、指定端口。 */ mSocket = new DatagramSocket(); /** 初始化发送用的DatagramSocket,它包含一个长度 为0的字节数组. */ outPacket = new DatagramPacket(new byte[0], 0, InetAddress.getByName(DEST_IP), DEST_PORT); /** 创建键盘输入流. */ Scanner scan = new Scanner(System.in); /** 不断读取键盘输入. */ while (scan.hasNextLine()) { /** 将键盘输入的一行字符串转换字节数组 */ byte[] buff = scan.nextLine().getBytes(); /** 设置发送用的DatagramPacket里的字节数据 */ outPacket.setData(buff); /** 发送数据报 */ mSocket.send(outPacket); /** 读取Socket中的数据,读到的数据放在inPacket所封装的字节数组里. */ mSocket.receive(inPacket); System.out.println(new String(inBuff, 0, inPacket.getLength())); } } /** 使用finally块保证关闭资源. */ finally { if (mSocket != null) { mSocket.close(); } } } public static void main(String[] args) throws IOException { new UdpClient().init(); } }
服务器端:
package com.example; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UdpServer { public static final int PORT = 30000; /** 定义每个数据报的最大大小为4K. */ private static final int DATA_LEN = 4096; /** 定义该服务器使用的DatagramSocket. */ private DatagramSocket socket = null; /** 定义接收网络数据的字节数组. */ byte[] inBuff = new byte[DATA_LEN]; /** 以指定字节数组创建准备接受数据的DatagramPacket对象. */ private DatagramPacket inPacket = new DatagramPacket(inBuff, inBuff.length); /** 定义一个用于发送的DatagramPacket对象. */ private DatagramPacket outPacket; /** 定义一个字符串数组,服务器发送该数组的的元素. */ String[] books = new String[] { "轻量级J2EE企业应用实战", "基于J2EE的Ajax宝典", "Struts2权威指南", "ROR敏捷开发最佳实践" }; public void init() throws IOException { try { /** 创建DatagramSocket对象. */ socket = new DatagramSocket(PORT); /** 采用循环接受数据. */ for (int i = 0; i < 10; i++) { /** 读取Socket中的数据,读到的数据放在inPacket所封装的字节数组里. */ socket.receive(inPacket); /** 判断inPacket.getData()和inBuff是否是同一个数组. */ System.out.println(inBuff == inPacket.getData()); /** 将接收到的内容转成字符串后输出. */ System.out.println(new String(inBuff, 0, inPacket.getLength())); /** 从字符串数组中取出一个元素作为发送的数据. */ byte[] sendData = books[i % 4].getBytes(); /** * 以指定字节数组作为发送数据、以刚接受到的DatagramPacket的源 * <p> * SocketAddress作为目标SocketAddress创建DatagramPacket. */ outPacket = new DatagramPacket(sendData, sendData.length, inPacket.getSocketAddress()); /** 发送数据. */ socket.send(outPacket); } } /** 使用finally块保证关闭资源. */ finally { if (socket != null) { socket.close(); } } } public static void main(String[] args) throws IOException { new UdpServer().init(); } }
最后说一句:此时服务器端的循环只有10次,在接受了10次数据后,Server端就不能接受到数据了.这个要注意一下.更详细点得描述,可以浏览这个地址:
http://hxdawxyhxdawxy.iteye.com/blog/1291266
总结一下:
客户端与服务器端的唯一区别在于:服务器所在IP地址、端口是固定的,所以客户端可以直接将该数据报发送给服务器,而服务器则需要根据接收到的数据报来决定将"反馈"数据报的目的地.
发表评论
-
WebView加载网页进度条显示
2012-03-06 19:52 2345重写WebChromeClient一个方法进行进度条显示: ... -
一种更灵活的数据传输方式:HTTP(2)
2011-12-16 11:18 2986HTTP是大多数应用程序中常用的与服务端交互的通讯方式 ... -
一种更灵活的数据传输方式:HTTP(1)
2011-12-16 10:52 1947使用WebService虽然 ... -
重用WebView的cache图片文件
2011-09-15 15:06 2031如何从WebView使用的cache文件夹中重复使用一些图片资 ... -
开,关闭GPRS的简单Demo
2011-06-09 10:54 2728Android应用中开,关闭GPRS的简单Demo,可能在有的 ... -
Intent打开各种类型文件
2011-04-10 18:22 4419//android获取一个用于打开PPT文件的intent ... -
图片Url保存为位图并进行缩放操作
2010-10-12 15:33 13561.通过传入图片url获取位图方法: public Bit ... -
判断手机有无网络
2010-09-15 16:18 2838ConnectivityManager cwjManage ... -
GoogleMap(通过输入地址,查询显示在google 地图上)
2010-08-15 10:18 4650主Activity: package net.blogja ... -
Android手机使用中国电信天翼上网设置
2010-08-07 16:01 3842众所周知Android手机的上网功能需要用到APN(网络接入点 ... -
GPS取得卫星个数
2010-08-07 15:09 2937LocationManager manager = (Lo ... -
连接服务器超时的Demo
2010-08-05 11:49 2416下面这个例子是连接网络超时的例子: package cn. ... -
下载网络文件到SD卡上
2010-08-02 19:07 3368下面一个一个类的来进行介绍: 1.DownLoadProgre ... -
下载网路图片到SD卡上新建文件夹当中
2010-07-27 22:52 31891.DownloadImages.java文件 packa ... -
sax方式解析xml文件(asset文件和网络文件)
2010-07-11 17:16 1964现在写了些博客后,变懒 ... -
xml中DOM对象的学习
2010-07-03 13:57 1281DOM的基本对象有5个:Doc ... -
DOM方式解析xml文件3(assets中xml文件)
2010-07-03 13:44 2563这个例子是进一步熟悉DOM解析xml文件的方法,附带基础的文档 ... -
DOM方式解析xml文件2(解析本地xml)
2010-07-01 20:42 1585这个与1的方法唯一不同的就是传递InputSource的参数: ... -
DOM方式解析xml文件1(解析网路xml)
2010-07-01 20:14 1583其实网上很多资料讲关 ... -
下载显示网路图片的例子
2010-07-01 10:46 1483一个很简单的例子,直接上代码: 1. ShowUrlImage ...
相关推荐
【标题】:“基于UDP协议的局域网端到端聊天程序” 这个项目是关于实现一个简单的局域网内的文本聊天程序,它利用了无连接的用户数据报协议(UDP)来传输信息。UDP是一种在网络应用中广泛使用的传输层协议,与TCP...
总的来说,这个基于UDP的Socket通信类是一个实用的工具,它为VS2008环境下的C++开发者提供了一种简洁的方式进行UDP通信,通过处理特定的消息来收发数据,降低了编程的复杂度。对于那些需要快速实现UDP通信功能的项目...
UDP(User Datagram Protocol)是一种无连接的传输层协议...通过运行`Udpsrv.exe`和`UdpClient.exe`,我们可以观察到UDP通信的简单流程,理解其工作原理,这对于学习网络编程和进一步开发基于UDP的应用程序非常有帮助。
在这个"udp文件传输多个例子"中,我们将探讨如何使用C和C++编程语言实现基于UDP的文件传输。 1. UDP基础知识: - UDP是面向无连接的,这意味着在发送数据之前,它不需要建立连接。这减少了通信开销,但也意味着...
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,而UDP则是一种无连接的、不可靠的、基于数据报的传输层协议。在TCP中,数据会被分段并进行排序,确保数据的完整性和顺序;UDP则不保证数据的顺序或完整性...
客户端通常需要知道服务器的IP地址和端口号,然后建立连接并进行数据交互。 3. **25 UDP服务器数据收发实验**:这个实验将展示UDP服务器的工作流程,包括设置端口,接收和发送数据报文,无需建立连接即可进行通信。...
Java聊天工具基于UDP编程是一种常见的网络通信应用,UDP(User Datagram Protocol)是传输层协议,与TCP(Transmission Control Protocol)相比,它提供了无连接、不可靠的服务,但具有更高的速度和更低的开销。...
通过这些文件,我们可以学习到如何使用VB来构建基于UDP的聊天应用。这包括创建和绑定UDP套接字、设置监听端口、接收和发送数据报、设计用户交互界面以及可能的错误处理。同时,这也是一个了解网络编程基础和VB编程...
本示例是基于QT库用C++语言编写的UDP(User Datagram Protocol)通信的简单程序,它包含了UI(用户界面)设计,使得用户可以直观地进行UDP数据的发送和接收。 UDP是一种无连接的传输层协议,与TCP相比,它不提供...
而UDP(用户数据报协议)则是一种无连接的、不可靠的、基于数据报的协议。它不保证数据的顺序、完整性和可靠性,但具有较低的延迟和更高的传输效率。UDP没有连接建立和拆除的过程,数据直接发送,因此适用于实时性...
Indy的UDP组件为开发人员提供了方便的方式来创建基于UDP的应用程序,无论是作为服务器端还是客户端。 在"indy udp_udp 转发_xe10.2 indy udp"这个例子中,开发者使用Indy的UDPServer组件来建立一个服务器,该服务器...
在这个例子中,我们将关注如何利用MFC来实现基于UDP的通信,并结合串口读取温度数据进行实时显示。 首先,UDP是一种无连接的传输层协议,它不像TCP那样在发送数据前建立连接,因此它的速度较快,但不保证数据的可靠...
【Java UDP广播的聊天室程序】是一个利用Java网络编程中的UDP协议实现的多用户交互平台。UDP(User Datagram Protocol)是一种无连接、不可靠的传输协议,它比TCP(Transmission Control Protocol)更快,更适合实时...
UDP协议控制块是与每个UDP连接相关联的数据结构。它包含了必要的信息来管理UDP连接,如本地和远程端口号、接收回调函数以及选项等。文档中提到的UDP PCB可能是一个链表结构,其中包含了多个UDP PCB节点(如pcbA、...
Java的UDP通讯是一种基于用户数据报协议(User Datagram Protocol)的网络通信方式,与TCP相比,UDP具有更快的传输速度,但不保证数据的顺序和完整性。本示例提供了两个关键文件:`WebServer.java` 和 `UDPServerA....
本示例将深入探讨基于UDP的客户端与服务器端的交互过程。 标题中的"udp客户服务器端回射完整例子"意味着我们将看到一个简单的程序,它由两个部分组成:一个UDP客户端和一个UDP服务器。客户端发送数据到服务器,而...
在这个"UDP实现简单聊天室功能"的例子中,我们将探讨如何利用UDP协议在Linux环境下创建一个基本的多用户交互平台。 首先,理解UDP协议的基础知识是必要的。UDP不提供连接建立、数据确认、顺序传输等服务,因此它比...
【标题】"UDP-demo.rar_DEMO_linux UDP"是一个关于Linux环境下使用UDP协议的演示实例,它揭示了如何在操作系统层面实现UDP(用户数据报协议)通信。UDP是互联网协议族中的一种无连接、不可靠的传输协议,常用于实时...
通过学习和理解这个例子,开发者可以了解到如何在LabVIEW中灵活运用UDP协议,为自己的测量、控制或数据传输应用构建基础。此外,这也可以作为进一步研究其他网络协议,如TCP/IP,或者进行多播等高级通信技术的起点。
接下来,我们来看看UDP协议。UDP是传输层的一个协议,与TCP(传输控制协议)相比,它更轻量级、更快,但不保证数据包的顺序、可靠性和错误检查。UDP适用于实时应用,如视频流和在线游戏,这些应用对速度有较高要求,...