Java第二十一章

一.网络程序设计基础

1.网络协议

        网络协议规定了计算机之间连接的物理、机械(网线与网卡的连接规定)、电气(有效的电平范围)等特征,计算机之间的相互寻址规则,数据发送冲突的解决方式,长数据如何分段传送与接收等内容.就像不同的国家有不同的法律一样,目前网络协议也有多种。

TCP与UDP 协议

        在 TCP/IP 协议栈中,有两个高级协议是网络应用程序编写者应该了解的,即传输控制协议Transmission Control Protocol,TCP) 与用户数据报协议 (User Datagram Protocol,UDP)。TCP 协议是一种以固接连线为基础的协议,它提供两台计算机间可靠的数据传送。TCP 可以保证数据从一端送至连接的另一端时,能够确实送达,而且抵达的数据的排列顺序和送出时的顺序相同。

2.端口与套接字

        一般而言,一台计算机只有单一的连到网络的物理连接(Physical Connection),所有的数据都通过此连接对内、对外送达特定的计算机,这就是端口。网络程序设计中的端口(port)并非真实的物理存在,而是一个假想的连接装置。端口被规定为一个在0~65535 的整数。HTTP 服务一般使用80端口,FTP 服务使用 21端口。假如一台计算机提供了 HTTP、FTP 等多种服务,那么客户机会通过不同的端口来确定连接到服务器的哪项服务上,如图所示。

二.TCP协议

        TCP 网络程序设计是指利用 Socket 类编写通信程序。利用TCP 协议进行通信的两个应用程序是有主次之分的,一个称为服务器程序,另一个称为客户机程序,两者的功能和编写方法大不一样

1.InetAddress类

        java.net 包中的 InetAddress 类是与 IP 地址相关的类,利用该类可以获取 IP 地址、主机地址等信息

例1.

2.ServeSocket类

        java.net 包中的 ServerSocket 类用于表示服务器套接字,其主要功能是等待来自网络上的“请求”它可通过指定的端口来等待连接的套接字。服务器套接字一次可以与一个套接字连接。如果多台客户机同时提出连接请求,服务器套接字会将请求连接的客户机存入列队中,然后从中取出一个套接字,与服务器新建的套接字连接起来。若请求连接数大于最大容纳数,则多出的连接请求被拒绝。队列的默认大小是 50。

3.TCP网络程序设计

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

例2.

三.UDP协议

基于UDP 通信的基本模式如下:

将数据打包 (称为数据包),然后将数据包发往目的地。

接收别人发来的数据包,然后查看数据包。

发送数据包的步骤如下:

(1)使用 DatagramSocket0创建一个数据包套接字。

(2) 使用 DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)创建要发送的数据包。

(3)使用 DatagramSocket 类的 send()方法发送数据包。

接收数据包的步骤如下:

(1)使用 DatagramSocket(int port)创建数据包套接字,绑定到指定的端口。

(2)使用 DatagramPacket(byte[] buf,int length)创建字节数组来接收数据包

(3) 使用 DatagramPacket 类的 receive()方法接收 UDP 包。

1.DatagramPacket类

        javanet 包的 DatagramPacket 类用来表示数据包。DatagramPacket 类的构造方法如下:

DatagramPacket(byte[] buf, int length)DatagramPacket(byte[] buf, int length, InetAddress address, int port)

2.DatagramSocket类

        java.net 包中的 DatagramSocket 类用于表示发送和接收数据包的套接字。该类的构造方法如下:

DatagramSocket()DatagramSocket(int port)DatagramSocket(int port, InetAddress addr)

3.UDP网络程序设计

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

例3.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/207947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

逻辑漏洞与越权

逻辑漏洞与越权 越权 如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。 一般越权漏洞容易出现在权限页面(需要登…

周星驰 互联网3.0 团队下个月将上线独立 App

2023年12月7日,新浪科技报道指出,周星驰旗下的互联网3.0团队透露,Moonbox,这家周星驰创立的互联网3.0初创公司,计划在明年1月份完成Moonbox App的上线,届时该应用将免费向用户提供服务。 目前,…

zotero关闭翻译自动创建标签

zotero中文社区:https://plugins.zotero-chinese.com/#/

代码迁移到gltlab仓库,包含全部分支和提交记录

老仓库所有分支都完整拉取 git clone --mirror 原仓库地址文件名:xxx.git 进入下载的目录,设置新的仓库地址 git remote set-url origin 新仓库地址推送到新仓库 git push -f origin --mirror问题一:remote: GitLab: The default branch …

Jmeter用于接口测试中,关联如何实现

Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,应该如何获取前一次请求的结果值,应用于后一个接口呢,拿一个登录的例子来说明如何获取。 1、打开jmeter, 使用的3.3的版本,新建一个测试计划&#…

maven学习笔记总结

目录 一、maven简介 二、GAVP属性 三、基于 IDLE 的 Maven 工程创建 1)java标准工程(Javase)的创建 2)java企业工程(Javaee)的创建 a)手动创建 b)插件方式创建(fil…

数据结构与算法(六)分支限界法(Java)

目录 一、简介1.1 定义1.2 知识回顾1.3 两种解空间树1.4 三种分支限界法1.5 回溯法与分支线定法对比1.6 使用步骤 二、经典示例:0-1背包问题2.1 题目2.2 分析1)暴力枚举2)分支限界法 2.3 代码实现1)实现广度优先策略遍历2&#xf…

力扣题:字符的统计-12.4

力扣题-12.4 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:657. 机器人能否返回原点 解题思想:进行统计即可 class Solution(object):def judgeCircle(self, moves):""":type moves: str:rtype: bool""&qu…

GeoPandas初体验:它是什么,我用它展示一下shp矢量数据

GeoPandas 是一个开源的 Python 库,用于处理地理空间数据。它扩展了 Pandas 这个流行的 Python 数据操作库,增加了对地理数据类型和操作的支持。GeoPandas 结合了 Pandas、Matplotlib 和 Shapely 的功能,提供了一个易于使用且高效的工具&…

c语言实例:计算并输出一个整数数组的平均值

大家好,今天给大家介绍一个c语言实例:计算并输出一个整数数组的平均值,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 以下是一个使用C语言实现的实例&am…

怎么将用户引流到你的私域中?

微信私域运营是一种利用微信平台建立与用户深度联系的营销方式,可在私域中触达并服务用户。 那么如何将在将用户引流至你的私域中呢? 可以从以下几个小方法入手。 ①打造一个吸引人的个人品牌形象非常重要。在社交媒体上展示真实、独特、专业的一面&a…

喜讯!云起无垠上榜《成长型初创企业推荐10强》

近期,由中国计算机学会抗恶劣环境计算机专业委员会、信息产业信息安全测评中心和安全牛联合发起的第十一版《中国网络安全企业100强》榜单正式发布。在这份备受关注的榜单中,云起无垠凭借其创新的技术能力,荣登《成长型初创企业推荐10强》榜单…

网络知识学习(笔记三)(传输层的TCP)

前面已经介绍了传输层的UDP协议的报文以及一下相关的知识点,本次主要是传输层的TCP协议,包括TCP报文的详细介绍;可靠传输、流量控制、拥塞控制等;建立连接、释放连接。 一、TCP基本知识点介绍 1.1、TCP协议的几个重要的知识点 …

网安领域含金量最高的证书有哪些?看这1篇就足够了!

文章目录 一、前言二、CISP三、CISAW四、NISP五、为什么很多人考不下来 一、前言 现在想找网络安全之类的工作,光有技术是不够的,还得有东西证明自己,网安三大敲门砖:CTF、漏洞证明和专业证书。 对于CTF的话只是少数人能参加的&…

uc_14_IP地址_套接字_字节序转换

1 计算机网络 计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。 网络协议是一种特…

AtCoder ABC周赛2023 11/4 (Sat) E题题解

目录 原题截图: 原题翻译 题目大意: 主要思路: 代码: 原题截图: 原题翻译 题目大意: 给你一个数组,给你一个公式,让你选k个元素,用公式算出最终得分。 主要思路&am…

X86汇编语言:从实模式到保护模式(代码+注释)--c6

X86汇编语言:从实模式到保护模式(代码注释)–c6 标志寄存器FLAGS: 6th:ZF位(Zero Flag):零标志,执行算数或者逻辑运算之后,会将该位置位。10th:D…

Shell数组函数:数组——数组和循环(三)

数组统计性别 一、定义性别文件 [root192 ~]# vim sex.txt jack m alice f tom m 二、定义脚本统计性别 [root192 ~]# vim sex.sh #!/bin/bash declare -A sex while read line dotypeecho $line | awk {print $2}let sex[$type] done < sex.txtfor i in ${!sex[]} doecho…

Linux基础——进程初识(一)

1. 硬件 ①冯诺依曼体系 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。其详细结构如下图所示 在这里有几点要说明 1. 这里的储存器实际上指的是内存 2. 输入设备与输出设备都属于外设 常见的输入设备…

实现SQL server数据库完整性

1.创建一个数据库名为“erp” 主数据文件&#xff1a;初始容量为5MB&#xff0c;最大容量为50MB&#xff0c;递增量为1MB&#xff0c;其余参数自设。事务日志文件&#xff1a;初始容量为3MB&#xff0c;最大容量为20MB&#xff0c;递增量为10%&#xff0c;其余参数自设。 创建…