`
George_ghc
  • 浏览: 93436 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android TCP/UDP[转]

阅读更多
什么是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 Demo

    在Android开发中,TCP(传输控制协议)和UDP(用户数据报协议)是两种常见的网络通信协议,它们各自具有不同的特点和应用场景。本篇将详细讲解Android环境下如何使用TCP和UDP进行通信,并介绍一个名为`TCPUtil`的...

    TCP&UDP;测试工具

    一个测试TCP/UDP连接的工具,通过软件与服务器建立连接,测试收发信息

    非常好用的tcp/udp有人网络调试助手apk,android安卓应用

    标题中的“非常好用的tcp/udp有人网络调试助手apk,android安卓应用”表明这是一个专为Android设备设计的应用程序,主要用于TCP和UDP网络协议的调试。这类工具在开发、测试或维护网络应用程序时非常有用,可以帮助...

    TCP/UDP免费调试工具

    TCP/UDP调试工具是一款Socket测试TCP、UDP测试的小工具SocketTest,可设置本地工作模式与本地端口,目的IP及目的端口,设置接收区与发送区参数。发送数据时可增加奇偶校验。 测试械:UDP组播/TCP客户端/UDP

    Android socket局域网的UDP广播自动连接及TCP/ip通讯与心跳检测

    简单的Android Socket ...客户端通过UDP广播获取到服务器端的IP地址,通过TCP/IP协议与服务器建立连接。代码实现心跳检测,当服务器断网或是结束进程,客户端可重新连接(重连部分自己实现);代码有点凌乱,仅供参考!

    TCP/UDP Socket调试工具

    Socket工具是一种用于网络通信协议(如TCP和UDP)调试的重要软件。它可以帮助开发者模拟服务端和客户端的行为,以便测试和验证网络应用的数据传输过程。在本文中,我们将深入探讨TCP和UDP Socket的基本概念,以及这...

    android Socket(TCP /UDP)

    本篇文章将深入探讨Android平台上的TCP和UDP Socket编程,并基于Java和Android实现客户端与服务器端的交互。 首先,TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议。在Android中实现TCP...

    TCP/UDP蓝牙工具App(电子助手)

    此APP是一个电子助手APP,可以进行TCP/UDP,蓝牙,http抓包,串口各方面的实验,在TCP下又分为TCP Server和TCP Client俩个模块,UDP可以支持单播和广播发送,当发送地址输入为255.255.255.255时就是广播发送

    ASocket 是一个TCP/UDP协议的封装库,方便快速实现TCP的长连接与UDP的单播、组播、广播等相关通信

    通过 ASocket 统一管理 TCP/UDP 相关 Socket,让其适用于Android,在UI主线程调用和回调,在子线程异步处理消息的发送与接收 特别说明 组播IP地址特别说明 多播的地址是特定的,D类地址用于多播。D类IP地址就是多播...

    tcp/udp的测试工具

    主要是用于TCP和UDP测试传输数据是否正常,最近在用android编写UDP传输,向大家分享下这个工具,很实用.

    Android Tcp&Udp; demo

    在这个"Android Tcp&Udp; demo"中,我们将深入探讨这两种协议在Android上的实现方式。 TCP是一种面向连接的、可靠的协议,它保证了数据的顺序传输和错误检测。在Android中,我们可以使用`java.net.Socket`类来创建...

    android UDP/TCP混用

    在Android平台上进行网络编程时,有时会遇到需要同时使用UDP(User Datagram Protocol)和TCP(Transmission Control Protocol)的情况。这两种协议各有特点,UDP是无连接的、不可靠的数据传输协议,而TCP则是一种...

    TCP-UDP通讯Android应用源码及windows测试工具.rar

    1 使用工具eclipse开发,Android平台,tcp和udp通讯应用源码,可以使用udp或tcp协议发送和接收数据 2 为了测试udp或tcp的接收和发送,提供了一个windows平台的测试工具,用于跟Android应用互通数据 源码是经过测试...

    基于QT实现TCP,UDP测试工具

    总结,这个基于QT的TCP,UDP测试工具提供了简单易用的界面,帮助开发者或网络管理员测试网络通信性能,验证TCP和UDP连接的正确性。对于学习网络编程和QT应用开发的人员来说,这是一个非常实用的工具。

    TCP与UDP通信手机端.zip

    利用Android Studio编写的安卓小程序,能够实现UDP与TCP通信。 UDP:能够收发消息。消息的显示采用的是时间+消息的格式 TCP:能够选择成为客户端还是服务器端。都能双向的收发消息。消息的显示采用的是时间+IP+消息的...

    android关于TCP,UDP的源码大全

    在Android平台上进行网络通信时,TCP(传输控制协议)和UDP(用户数据报协议)是两种最常用的协议。本文将深入探讨这两种协议在Android环境下的应用,并基于提供的文件名,介绍相关的源码示例和通信工具。 首先,...

    Android与服务器通信(TCP&UDP

    本教程将详细探讨Android应用如何使用TCP和UDP这两种常用网络传输协议与服务器进行通信。 首先,TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议。在Android中,我们通常使用Socket类来实现...

    UDP TCP Widget_v2.10.1.apk

    一款在Android系统环境下使用的TCP/UDP网络管理、诊断和调试小工具,安装在Android手机运行后发送TCP/UDP数据包,可用于以控制远程的计算机/微控制器执行UDP/TCP协议服务程序。

    TCP UDP 网络蓝牙一体调试助手app(安卓android).rar

    本人工程师一枚,用这个软件很方便调试WIFI、蓝牙、GPRS等模块,有TCP Server TCP Client UDP调试、蓝牙功能,在手机上就能调试,可以设置IP地址和端口等等,界面美观,功能强大,非常实用方便,值得推荐。

    TCP-IP详解(协议、实现、TCP事务协议)

    2. 传输层:主要包括TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供面向连接的服务,确保数据的顺序传输和错误校验,而UDP则是一种无连接的服务,适用于实时通信,但不保证数据的可靠性。 3. 网络层:主要...

Global site tag (gtag.js) - Google Analytics