什么是TCP?
TCP:Transmission Control Protocol 传输把握和谈TCP是一种面向连接(连接导向)的、靠得住的、基于字节俭的运输层(Transport layer)通信和谈,由IETF的RFC 793申明(specified)。在简化的策画机收集OSI模型中,它完成第四层传输层所指定的功能。应用层向TCP层发送用于网间传输的、用8位字节默示的数据流,然后TCP把数据流分别成恰当长度的报文段(凡是受该策画机连接的收集的数据链路层的最大传送单位(MTU)的限制)。之后TCP把成果包传给IP层,由它来经由过程收集将包传送给接管端实体的TCP层。TCP为了包管不产生丢包,就给每个字节一个序号,同时序号也包管了传送到接管端实体的包的按序接管。然后接管端实体对已成功收到的字节发还一个响应的确认(ACK);若是发送端实体在公道的往返时延(RTT)内未收到确认,那么对应的数据(假设丧失了)将会被重传。TCP用一个校验和函数来查验数据是否有错误;在发送和接管时都要策画校验和。
起首,TCP建树连接之后,通信两边都同时可以进行数据的传输,其次,他是全双工的;在包管靠得住性上,采取超时重传和捎带确认机制。
在流量把握上,采取滑动窗口和谈[1],和谈中规定,对于窗口内未经确认的分组须要重传。
在拥塞把握上,采取慢启动算法。
什么是UDP?
UDP 是User Datagram Protocol的简称, 中文名是用户数据包和谈,是 OSI 参考模型中一种无连接的传输层和谈,供给面向事务的简单不成靠信息传送办事。它是IETF RFC 768是UDP的正式规范。在收集中它与TCP和谈一样用于处理惩罚数据包。在OSI模型中,在第四层——传输层,处于IP和谈的上一层。UDP有不供给数据报分组、组装和不克不及对数据包的排序的毛病,也就是说,当报文发送之后,是无法得知其是否安然完全达到的。 UDP用来支撑那些须要在策画机之间传输数据的收集应用。包含收集视频会议体系在内的浩繁的客户/办事器模式的收集应用都须要应用UDP和谈。UDP和谈从问世至今已经被应用了很多年,固然其最初的名望已经被一些类似和谈所袒护,然则即使是在今天,UDP仍然不失为一项很是实用和可行的收集传输层和谈。
与所熟知的TCP(传输把握和谈)和谈一样,UDP和谈直接位于IP(网际和谈)和谈的顶层。按照OSI(开放体系互连)参考模型,UDP和TCP都属于传输层和谈。
UDP和谈的首要感化是将收集数据流量紧缩成数据报的情势。一个典范的数据报就是一个二进制数据的传输单位。每一个数据报的前8个字节用来包含报头信息,残剩字节则用来包含具体的传输数据。
TCP和UDP在android中的应用和在Java里是完全一样的。
起首我们看看TCP连接,下图为TCP连接的一个示意图
是不是很好懂得,这里就不久不多说了,直接看代码吧!实践出真知。
TCP服务器端代码:
try {
Boolean endFlag = false;
ServerSocket ss = new ServerSocket(12345);
while (!endFlag) {
// 守候客户端连接
Socket s = ss.accept();
BufferedReader input = new BufferedReader(newInputStreamReader(s.getInputStream()));
//重视第二个参数据为true将会主动flush,不然须要须要手动操纵output.flush()
PrintWriter output = newPrintWriter(s.getOutputStream(),true);
String message = input.readLine();
Log.d("Tcp Demo", "message Client:"+message);
output.println("message received!");
//output.flush();
if("shutDown".equals(message)){
endFlag=true;
}
s.close();
}
ss.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
TCP客户端代码:
try {
Socket s = new Socket("localhost", 12345);
// outgoing stream redirect to socket
OutputStream out = s.getOutputStream();
// 重视第二个参数据为true将会主动flush,不然须要须要手动操纵out.flush()
PrintWriter output = new PrintWriter(out, true);
output.println("Hello IdeasAndroid!");
BufferedReader input = new BufferedReader(newInputStreamReader(s
.getInputStream()));
// read line(s)
String message = input.readLine();
Log.d("Tcp Demo", "message From Server:" + message);
s.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
下面我们看看UDP:
UDP办事器端代码:
// UDP服务器监听的端口
Integer port = 12345;
// 接管的字节大小,客户端发送的数据不克不及跨越这个大小
byte[] message = new byte[1024];
try {
// 建树Socket连接
DatagramSocket datagramSocket = new DatagramSocket(port);
DatagramPacket datagramPacket = new DatagramPacket(message,
message.length);
try {
while (true) {
// 筹办接管数据
datagramSocket.receive(datagramPacket);
Log.d("UDP Demo", datagramPacket.getAddress()
.getHostAddress().toString()
+ ":" + new String(datagramPacket.getData()));
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (SocketException e) {
e.printStackTrace();
}
UDP客户端代码:
public static void send(String message) {
message = (message == null ? "Hello IdeasAndroid!" : message);
int server_port = 12345;
DatagramSocket s = null;
try {
s = new DatagramSocket();
} catch (SocketException e) {
e.printStackTrace();
}
InetAddress local = null;
try {
// 换成办事器端IP
local = InetAddress.getByName("localhost");
} catch (UnknownHostException e) {
e.printStackTrace();
}
int msg_length = message.length();
byte[] messagemessageByte = message.getBytes();
DatagramPacket p = new DatagramPacket(messageByte, msg_length, local,
server_port);
try {
s.send(p);
} catch (IOException e) {
e.printStackTrace();
}
}
- 大小: 19.6 KB
- 大小: 26.7 KB
分享到:
相关推荐
在Android开发中,TCP(传输控制协议)和UDP(用户数据报协议)是两种常见的网络通信协议,它们各自具有不同的特点和应用场景。本篇将详细讲解Android环境下如何使用TCP和UDP进行通信,并介绍一个名为`TCPUtil`的...
一个测试TCP/UDP连接的工具,通过软件与服务器建立连接,测试收发信息
标题中的“非常好用的tcp/udp有人网络调试助手apk,android安卓应用”表明这是一个专为Android设备设计的应用程序,主要用于TCP和UDP网络协议的调试。这类工具在开发、测试或维护网络应用程序时非常有用,可以帮助...
TCP/UDP调试工具是一款Socket测试TCP、UDP测试的小工具SocketTest,可设置本地工作模式与本地端口,目的IP及目的端口,设置接收区与发送区参数。发送数据时可增加奇偶校验。 测试械:UDP组播/TCP客户端/UDP
简单的Android Socket ...客户端通过UDP广播获取到服务器端的IP地址,通过TCP/IP协议与服务器建立连接。代码实现心跳检测,当服务器断网或是结束进程,客户端可重新连接(重连部分自己实现);代码有点凌乱,仅供参考!
Socket工具是一种用于网络通信协议(如TCP和UDP)调试的重要软件。它可以帮助开发者模拟服务端和客户端的行为,以便测试和验证网络应用的数据传输过程。在本文中,我们将深入探讨TCP和UDP Socket的基本概念,以及这...
本篇文章将深入探讨Android平台上的TCP和UDP Socket编程,并基于Java和Android实现客户端与服务器端的交互。 首先,TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议。在Android中实现TCP...
此APP是一个电子助手APP,可以进行TCP/UDP,蓝牙,http抓包,串口各方面的实验,在TCP下又分为TCP Server和TCP Client俩个模块,UDP可以支持单播和广播发送,当发送地址输入为255.255.255.255时就是广播发送
通过 ASocket 统一管理 TCP/UDP 相关 Socket,让其适用于Android,在UI主线程调用和回调,在子线程异步处理消息的发送与接收 特别说明 组播IP地址特别说明 多播的地址是特定的,D类地址用于多播。D类IP地址就是多播...
主要是用于TCP和UDP测试传输数据是否正常,最近在用android编写UDP传输,向大家分享下这个工具,很实用.
在这个"Android Tcp&Udp; demo"中,我们将深入探讨这两种协议在Android上的实现方式。 TCP是一种面向连接的、可靠的协议,它保证了数据的顺序传输和错误检测。在Android中,我们可以使用`java.net.Socket`类来创建...
在Android平台上进行网络编程时,有时会遇到需要同时使用UDP(User Datagram Protocol)和TCP(Transmission Control Protocol)的情况。这两种协议各有特点,UDP是无连接的、不可靠的数据传输协议,而TCP则是一种...
1 使用工具eclipse开发,Android平台,tcp和udp通讯应用源码,可以使用udp或tcp协议发送和接收数据 2 为了测试udp或tcp的接收和发送,提供了一个windows平台的测试工具,用于跟Android应用互通数据 源码是经过测试...
总结,这个基于QT的TCP,UDP测试工具提供了简单易用的界面,帮助开发者或网络管理员测试网络通信性能,验证TCP和UDP连接的正确性。对于学习网络编程和QT应用开发的人员来说,这是一个非常实用的工具。
利用Android Studio编写的安卓小程序,能够实现UDP与TCP通信。 UDP:能够收发消息。消息的显示采用的是时间+消息的格式 TCP:能够选择成为客户端还是服务器端。都能双向的收发消息。消息的显示采用的是时间+IP+消息的...
在Android平台上进行网络通信时,TCP(传输控制协议)和UDP(用户数据报协议)是两种最常用的协议。本文将深入探讨这两种协议在Android环境下的应用,并基于提供的文件名,介绍相关的源码示例和通信工具。 首先,...
本教程将详细探讨Android应用如何使用TCP和UDP这两种常用网络传输协议与服务器进行通信。 首先,TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议。在Android中,我们通常使用Socket类来实现...
一款在Android系统环境下使用的TCP/UDP网络管理、诊断和调试小工具,安装在Android手机运行后发送TCP/UDP数据包,可用于以控制远程的计算机/微控制器执行UDP/TCP协议服务程序。
本人工程师一枚,用这个软件很方便调试WIFI、蓝牙、GPRS等模块,有TCP Server TCP Client UDP调试、蓝牙功能,在手机上就能调试,可以设置IP地址和端口等等,界面美观,功能强大,非常实用方便,值得推荐。
2. 传输层:主要包括TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供面向连接的服务,确保数据的顺序传输和错误校验,而UDP则是一种无连接的服务,适用于实时通信,但不保证数据的可靠性。 3. 网络层:主要...