UDP(User Datagram Protocol 用户数据报协议)

TCP(Transmission Control Protocol 传输控制协议)

  UDP是一种非面向连接的传输协议,它的实现是通过向指定ip的指定端口发送一定字节长的数据包完成通信,UDP协议不会在意接收端有没有收到数据包,不对传输的数据包到达的顺序、能否到达指定地址做任何保证,因此是一种不可靠但速度很快的协议,通常用在即时通讯、网络即时视频传输等不太在意丢失个别数据包的情况下。

在java中,通过UDP协议进行通信是使用DatagramSocket对象来操作相关数据,用DatagramPacket对象来抽象表示数据包,DatagramSocket类的构造函数可以指定接收端所监听的端口或者指定发送端发送数据使用的端口,在发送端DatagramPacket类的构造函数可以接受一个已存在数据的字节数组并指定要发送到的主机名(IP地址)及其端口,然后用DatagramSocket对象的send()方法将此数据包发送到指定地址,在接收端DatagramPacket类的构造函数只指定一个字节数组用于存放数据,然后用DatagramSocket服务的receive()方法(此方法为接受数据包的阻塞式方法)将传来的数据包中的数据存入此字节数组中,(可用DatagramPacket中的getLength()方法获取传来的数据包中字节数组的长度用于接收端对数据的操作)。
  TCP是一种面向连接的可靠的、基于字节流的传输层通信协议,TCP协议通过服务端和客户端的三次握手可以建立一个可靠的连接,连接建立后,在Java中就可以用io流技术来传输信息。
  java中用于TCP协议的服务类有两个,一个是用于客户端的Socket类,一个是用于服务器端的ServerSocket类,ServerSocket服务的accept()方法可以返回一个Socket对象,通过此Socket对象可以用Socket类中的getInputStream()和getOutputStream()得到客户端的输出流和输入流(两端输入与输出逻辑对称),通过操作流对象可以实现客户端与服务器端的双向传输。
  为了使服务器端可以同时处理多个客户端请求,可以通过多线程技术来实现,具体方法是在服务器端中建立死循环,通过ServerSocket服务的accept()方法(阻塞式方法)获得服务端Socket对象,通过将Socket对象传入实现了Runnable接口的类中建立新对象,将对客户端的回应代码封装入该类中的run()方法中,通过在死循环中的阻塞方法后建立新线程的方式,实现总有一个accept()方法处于阻塞状态中等待回应客户端的状态。

UDP和TCP的区别的更多相关文章

  1. Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器    定义:       ...

  2. UDP和TCP的区别(转)

    TCP协议与UDP协议的区别    首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...

  3. Java UDP和TCP的区别

    为什么要写这篇博客:是这样的,最近听朋友说,有不少公司面试的时候会问道TCP和UDp的却别,所以就写出一篇简单的来描述他们之间的区别,送给那些即将面试的朋友们. UDP: 1.UDP, a.将数据以及 ...

  4. UDP和TCP的区别?

    区别总结: 1.TCP面向连接,UDP的面向无连接的,即发送数据之前不需要建立简介. 2.TCP提供可靠的数据传输,有发送应答机制,超时重传机制,错误校验机制,流量控制机制保证传输的安全,不丢失,不重 ...

  5. TCP/IP协议中的UDP与TCP的区别

    TCP面向连接,UDP面向非连接即发送数据前不需要建立链接TCP提供可靠的服务(数据传输),UDP无法保证,它没有TCP的接受确认.窗口等机制,因此也不需要交换控制信息:发生丢包也一概不负责.TCP面 ...

  6. UDP和TCP的区别和联系

    UDP特点 将数据源和目的封装在数据包中,不需要简历连接 每个数据报的大小在限制在64K内 因无连接,是不可靠协议 不需要建立连接,速度快 TCP 建立连接.形成传输数据通道. 在连接中进行大量数据量 ...

  7. UDP和TCP 简单 区别

    1.双方都是一种网络传输协议2.TCP需要建立连接,而UDP不需要建立连接(无连接传输)3.是否建立真实连接的特性,造成了双方可靠性的差距. @1 TCP属于可靠的传输协议:因为传输前双方建立好了连接 ...

  8. 聊聊UDP、TCP和实现一个简单的JAVA UDP小Demo

    最近真的比较忙,很久就想写了,可是一直苦于写点什么,今天脑袋灵光一闪,觉得自己再UDP方面还有些不了解的地方,所以要给自己扫盲. 好了,咱们进入今天的主题,先列一下提纲: 1. UDP是什么,UDP适 ...

  9. TCP和UDP的优缺点及区别

    1.TCP是什么? TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议. TCP的优点: 可靠,稳定 TCP的可靠体 ...

随机推荐

  1. VB.NET操作Excel

    VB.NET操作Excel的基本方法与例子:

  2. cocos2d-js 学习笔记 --安装调试(2)

    对于初学者安装cocos2d-js的环境并没有教程中说的那么简单,至少笔者是这么认为的 第一步,下载cocos2d-js的SDK,(先别着急运行) 第二步,安装Cocos2d console ,(Ma ...

  3. java复杂枚举

    枚举以红绿灯为例,红灯30s后为绿灯,绿灯45s后为黄灯,黄灯5s后为红灯.具体的枚举代码如下: public enum TrafficLamp{ RED(30){ public TrafficLam ...

  4. Target runtime com.genuitec.runtime.generic.jee60 is not defined

    转载自:http://jingyan.baidu.com/article/d7130635338e3f13fdf47518.html 用eclipse加载别人的工程,报错Target runtime ...

  5. 切换debian8系统语言环境

    想切换操作系统的默认语言环境,可以使用如下命令,而不用重新安装系统: 查看操作系统的语言: # env | grep LANG 使用root导入要使用的系统语言: # export LANG=en_U ...

  6. CString转换为string

    string CStringToString(CString strMFC) { CStringA strA; strA = strMFC.GetBuffer(); strMFC.ReleaseBuf ...

  7. KAOS模型

    问题描述: 我们开发了一种针对时序数据的文件格式TSFile,本身不支持sql查询.为了让公司分析人员能够用SQL进行分析,并且应用一些机器学习算法进行预测,需要设计并实现一个TSFile与Spark ...

  8. python中date、datetime、string的相互转换

    import datetime import time string转datetime str = '2012-11-19' date_time = datetime.datetime.strptim ...

  9. centos安装tmux过程

    原文:https://gist.github.com/rothgar/cecfbd74597cc35a6018 # Install tmux on Centos release 6.5 # insta ...

  10. PHP7函数大全(4553个函数)

    转载来自: http://www.infocool.net/kb/PHP/201607/168683.html a 函数 说明 abs 绝对值 acos 反余弦 acosh 反双曲余弦 addcsla ...