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. Python~字典

    if not isinstance(x, (int, float)): raise TypeError('bad operand type')   range() raw_input(‘birth’) ...

  2. Python之路,Day6 - Python基础6

    本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...

  3. [Android Pro] Scroller使用分析

    reference to : http://blog.csdn.net/a910626/article/details/51548840 一.Scroller是什么? Android里 Scrolle ...

  4. AngularJs 通过 ocLazyLoad 实现动态(懒)加载模块和依赖

    好了,现进入正题,在 AngularJs 实现动态(懒)加载主要是依赖于3个主JS文件和一段依赖的脚本. 实现的过程主要是引用3个主要的JS文件 <script src="angula ...

  5. SortedList和HashTable

    都是集合类,C#中同属命名空间System.Collections,“用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写:value用于存储对应于key的 ...

  6. unity的固定管线shader

    最近shader学习中,看的视频. 练习的固定管线的shader如下: ps.在unity5中半透明不好用,其他的还好 //不区分大小写 //这是固定管线的Shader Shader "Sh ...

  7. C#调用win32 api 操作其它窗口

    实现以下功能: 找到窗体 找到控件(也叫子窗体) 获取内容 获取位置 设置 位置 内容 鼠标点击 示范 1. 找窗体 以操作系统自带的计算器为例 string clWindow = "Cal ...

  8. Unity Cookie

    1   在Unity里面,选择脚本单击左键打开 Sync Mono Development  这样就可以打开整个工程的脚本文件 进而才能在脚本中继续进行切换      Mesh    MeshFilt ...

  9. python import cv2 出错:cv2.x86_64-linux-gnu.so: undefined symbol

    之前写过一个python使用opencv处理图片的脚本,当时是可以使用的,现在突然发现执行时出错: ImportError: /usr/lib/python2.7/dist-packages/cv2. ...

  10. 【leetcode】Isomorphic Strings

    题目简述: Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the ...