当前位置: 首页 > article >正文

Java第二十一章网络通信

一、网络程序设计基础
1、局域网与互联网
为了实现两台计算机的通信,必须用一个网络线路连接两台计算机,如下图所示。

2、网络协议
1.IP协议

IP指网际互连协议,Internet Protocol的缩写,是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。

2.TCP与UDP协议

TCP和UDP协议是TCP/IP协议的核心。 TCP 传输协议:TCP 协议是一TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。

定义:

在TCP/IP网络体系结构中,TCP(传输控制协议,Transport Control Protocol、UDP(用户数据报协议,User Data Protocol)是传输层最重要的两种协议,为上层用户提供级别的通信可靠性。

传输控制协议(TCP):TCP(传输控制协议)定义了两台计算机之间进行可靠的传输而交换的数据和确认信息的格式,以及计算机为了确保数据的正确到达而采取的措施。协议规定了TCP软件怎样识别给定计算机上的多个目的进程如何对分组重复这类差错进行恢复。协议还规定了两台计算机如何初始化一个TCP数据流传输以及如何结束这一传输。TCP最大的特点就是提供的是面向连接、可靠的字节流服务。

用户数据报协议(UDP):UDP(用户数据报协议)是一个简单的面向数据报的传输层协议。提供的是非面向连接的、不可靠的数据流传输。UDP不提供可靠性,也不提供报文到达确认、排序以及流量控制等功能。它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。因此报文可能会丢失、重复以及乱序等。但由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

3、端口与套接字


二、TCP程序

1、InetAddress类


例题:获取计算机的本机名与IP地址

2、ServerSocket类

3、TCP网络程序设计
明白了TCP程序工作的过程,就可以编写TCP 服务器程序了。在网络编程中,如果只要求客户机向服务器发送消息,不要求服务器向客户机发送消息,称为单向通信。客户机套接字和服务器套接字连接成功后,客户机通过输出流发送数据,服务器则通过输入流接收数据。下面是简单的单向通信的实例。

例题:创建TCP/IP协议服务器

运行服务器端程序,将输出提示信息,等待客户呼叫。下面再来看一下客户端程序。

编写客户端程序,将用户在文本框中输入的信息发送至服务器端,并将文本框中输入的信息显示在客户端的文本域中。

三、UDP程序


1、DatagramPacket类


2、DatagramSocket类

3、UDP网络程序设计
根据前面所讲的网络编程的基本知识以及 UDP 网络编程的特点,下面创建一个广播数据报程序。广播数据报是一项较新的技术,其原理类似于电台广播。广播电台需要在指定的波段和频率上广播信息,收听者也要将收音机调到指定的波段、频率,才可以收听广播内容。

例题:创建UDP协议广播电台程序

(1)广播主机程序不断地向外播出信息,代码如下:

(2)接收广播程序。单击“开始接收”按钮,系统开始接收主机播出的信息;单击“停止接收”按钮,系统停止接收广播主机播出的信息。代码如下:​

说明:发出广播和接收广播的主机地址必须位于同一个组内,地址范围为224.0.0.0~224.255.255.255,该地址并不代表某个特定主机的位置,加入同一个组的主机可以在某个端口上广播信息,也可以在某个端口上接收信息。


http://www.kler.cn/a/160007.html

相关文章:

  • C++中的栈(Stack)和堆(Heap)
  • GxtWaitCursor:Qt下基于RAII的鼠标等待光标类
  • Openstack7--安装消息队列服务RabbitMQ
  • 使用jmeter查询项目数据库信息,保存至本地txt或excel文件1108
  • 1小时构建Vue3知识体系之vue的生命周期函数
  • SAP_MM_SD_PP_FICO_视频课程几乎免费送
  • InST论文复现
  • 本地缓存LoadingCache使用【详解】
  • Hadoop入门学习笔记
  • Spring MVC学习随笔-控制器(Controller)开发详解:控制器跳转与作用域(二)视图模板、静态资源访问
  • JavaScript中处理时间差
  • torch 如何实现两点分布采样,100个样本中20个样本为1,80个为2
  • Docker-多容器应用
  • 算法题:买汽水(瓶子瓶盖换水)
  • Linux下的查看文件的命令
  • 面试被问到 HTTP和HTTPS的区别有哪些?你该如何回答~
  • 制作一个RISC-V的操作系统五-RISC-V汇编语言编程三
  • Python-炸弹人【附完整源码】
  • 【C/C++指针】指针*与引用的区别
  • 12.06 二叉树中等题2
  • 安网AC智能路由系统actpt_5g.data敏感信息泄露漏洞复现 [附POC]
  • 表单修改时取消disabled snippet
  • 【节日专栏】Python海龟绘制圣诞树代码
  • 0X05
  • 一、CSharp_Basic:什么是.Net平台?什么是.Net FrameWork?什么是C#?
  • C# Solidworks二次开发:获取零件的最小包容体方法详解