韩顺平Java | C21网络编程

1 网络的相关概念

ip地址的组成:网络地址+ 主机地址
在这里插入图片描述
A类:0 ~ 2^7-1 = 0 ~ 127
B类:128 ~ 128+2^6-1 = 128 ~ 191
C类:192 ~ 192+2^5-1 = 192 ~ 223
D类:224 ~ 224+2^4-1 = 224 ~ 239
E类:240 ~ 240+2^3-1 = 240 ~ 247

端口号:在网络开发中,不要使用0~1024的端口,名花有主
常见的网络程序端口号:ssh: 22, ftp: 21, smtp: 25, http: 80, https: 443, tomcat: 8080, mysql: 3306, oracle: 1521, sqlserver: 1433

网络通讯协议TCP/IP(Transmission Control Protocol/Internet Procotol)传输控制协议/因特网互联协议
在这里插入图片描述
TCP&UDP
TCP:需要先建立三次握手,可靠,传输大量数据,完成需要释放连接,消息低
UDP:不需要建立连接,不可靠,不适合传输大量数据,速度快

2 网络编程

InetAddress类的使用

getLocalHost() //获取本机InetAddress对象getLocalHost
getByName() //根据指定主机名/域名获取ip地址对象
getHostName() //获取InetAddress对象的主机名
getAddress() //获取InetAddress对象的地址

Socket

Socket套接字(TCP/UDP编程)是两台机器通信的端点,网络通信实际就是Socket间的通信
当我们需要通讯时(读写数据) socket.getOutputStream() socket.getInputStream()

应用 编写服务端和客户端交互

1 编写一个服务端(9999端口监听),一个客户端
2 客户端连接到服务端,发送"hello, server",并接收到服务器端返回的"hello, client",再退出
(写完要使用socket.shutdownOutput()设置结束标记)
3 服务端接收客户端发送的信息,并发送"hello, client",再退出

//编写服务端
//1 创建服务端监听9999,要求本机没有其他服务监听统一端口
ServerSocket serverSocket = new ServerSocket(9999);
//如果没有客户端连接该端口,程序会阻塞,等待连接
System.out.print("服务器,在9999端口监听,等待连接...");
//2 如果有客户端连接,则返回Socket对象,程序继续
Socket socket = serverSocket.accept();
// ServerSocket可以通过accept()返回多个Socket[多个客户端连接服务器的并发]
System.out.println("服务端socket =" + socket.getClass());//3 通过socket.getInputStream()读取客户端写入到数据通道的数据,显示
InputStream inputStream = socket.getInputStream();
//4.1 IO读取,使用字节流
byte[] buf = new byte[1024];
int readLen = 0;
while((readLen = inputStream.read()) != -1) {System.out.print(new String(buf, 0, readLen));
}
//4.2 IO读取,使用字符流
String s;
BuffereadReader bufferReader = new BufferedReader(new InputStreamReader(inputStream)); // 用InputStreamReader将inputStream转成字符流
while((s = bufferedReader.readLine()) != null) {System.out.prinln(s);
}
//5 获取socket相关的输出流
OutputStream outputStream = socket.getOutputStream();
//5.1 IO写,使用字节流
outputStream.write("hello,client".getBytes());
//5.2 IO读,使用字符流
BufferedWriter bufferWriter = new BufferWriter(new OutputStreamWriter(outputStream));
bufferWriter.write("hello,client");
bufferWriter.newLine();
bufferWriter.flush();//设置结束标记
socket.shutdownOutput();
//6 关闭流和socket
inputStream.close();
socket.close();
serverSocket.close();//编写客户端
//1 创建客户端socket连接服务端
Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
System.out.print("客户端socket返回=" + socket.getClass);
//2 通过socket.getOutputStream()得到和socket关联的输出流对象
OutputStream outputStream = socket.getOutputStream();
//3.1 IO写入,使用字节流
OutputStream.write("hello, server".getBytes());
//3.2 IO写入,使用字符流
BufferWriter bufferWriter = new BufferWriter(new OutputStreamWriter(outputStream));
bufferWriter.write("hello, server");
bufferWriter.newLine();
bufferWrite.flush();
//设置结束标志
socket.shutdownOutput();
//4.1 获取和socket相关的输入流,读取数据(字节)并显示
byte[] buf = new byte[1024];
int readLen = 0;
InputStream inputStream = socket.getInputStream();
while((readLen = inputStream.read(buf))) != -1) {System.out.print(buf, 0, readLen);
}
//4.2 获取和socket相关的输入流,读取数据(字符)并显示
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
System.out.println(bufferedReader.readLine);
//5 关闭流对象和socket
outputStream.close();
socket.close();

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

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

相关文章

正弦实时数据库(SinRTDB)的使用(5)-历史数据查询(一)

前文已经将正弦实时数据库的使用进行了介绍,需要了解的可以先看下面的博客: 正弦实时数据库(SinRTDB)的安装 正弦实时数据库(SinRTDB)的使用(1)-使用数据发生器写入数据 正弦实时数据库(SinRTDB)的使用(2)-接入OPC DA的数据 正弦实时数据库(SinRTDB)…

20240321-1-AB测试面试题

AB测试面试题 1. 介绍一下ABTest的步骤 ABtest就是为了测试和验证模型/项目的效果,在app/pc端设计出多个版本,在同一时间维度下,分别用组成相同/相似的群组去随机访问这些版本,记录下群组的用户体验数据和业务数据,最…

力扣题库88题:合并两个有序数组(c语言)

解法: void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {int l1m-1;int l2n-1;int l3mn-1;while(l1>0&&l2>0){if(nums1[l1]>nums2[l2]){nums1[l3--]nums1[l1--];}else{nums1[l3--]nums2[l2--];}}while(l2>0)…

化工企业能源在线监测管理系统,智能节能助力生产

化工企业能源消耗量极大,其节能的空间也相对较大,所以需要控制能耗强度,保持更高的能源利用率。 化工企业能源消耗现状 1、能源管理方面 计量能源消耗时,计量器具存在问题,未能对能耗情况实施完全计量,有…

uniapp-Form示例(uviewPlus)

示例说明 Vue版本&#xff1a;vue3 组件&#xff1a;uviewPlus&#xff08;Form 表单 | uview-plus 3.0 - 全面兼容nvue的uni-app生态框架 - uni-app UI框架&#xff09; 说明&#xff1a;表单组建、表单验证、提交验证等&#xff1b; 截图&#xff1a; 示例代码 <templat…

阎淑萍:老母猪戴口罩还挺重视这张老脸啊,赵本山:我也相当副科级呀!

阎淑萍&#xff1a;老母猪戴口罩还挺重视这张老脸啊&#xff0c;赵本山&#xff1a;我也相当副科级呀&#xff01; ——小品《老拜年》&#xff08;上&#xff09;的台词 《老拜年》 是赵本山、阎淑萍、王中青、苏杰在《1993年中央电视台春节联欢晚会》上表演的小品&#xff0…

支付系列——从支付宝与银联的多年恩怨说起

备注&#xff1a;本文纯属个人观点&#xff0c;可能会有错误&#xff0c;但不接受反驳&#xff0c;哈哈&#xff01;同时&#xff0c;本文没写太多专业术语&#xff0c;只是科普和胡侃&#xff01; 2003年&#xff0c;马云刚创立淘宝网不久&#xff0c;为了能够提供更便捷的线上…

GEE实践应用|热岛效应(一)地表温度计算

目录 1.学习目标 2.理论介绍 3.从MODIS获得地表温度 4.从Landsat卫星获得地表温度 1.学习目标 ①了解如何使用GEE计算地表温度 2.理论介绍 城市化涉及用建筑物、道路和停车场等建筑结构取代自然景观。这种土地覆盖的改变也改变了土地表面的特性。这些变化的范围从表面反射和…

【JavaWeb】Day20.Vue组件库Element——常见组件

常见组件-对话框 Dialog 对话框&#xff1a;在保留当前页面状态的情况下&#xff0c;告知用户并承载相关操作。 首先打开官网&#xff08;Element - The worlds most popular Vue UI framework&#xff09;找到使用的对话框组件。 以自定义内容为例&#xff1a; 常见组件-表…

【实战】springboot整合swagger及knife4j

文章目录 前言技术积累何为swagger何为knife4jSwagger2与Swagger3注解的主要区别 springboot整合swagger及knife4j导入maven依赖yaml配置编写配置类编写实体和接口 效果展示 前言 对于一个有着资深后端搬砖经验的人来说&#xff0c;最重要的事情就是写API文档了。一个好的API文…

批量删除 rabbitmq中随机队列

批量删除 amq.gen–* 随机队列 操作错误产生了无效随机队列&#xff0c;需要批量删除 过滤列出指定amq.gen–队列 # 列出 指定 vhost/qq 以amq.gen开头的所有队列 rabbitmqctl list_queues --vhost / | grep ^amq.gen-# 批量删除队列 #由于list_queues会列出队列名称以及对应…

蓝桥杯真题Day40 倒计时19天 纯练题!

蓝桥杯第十三届省赛真题-统计子矩阵 题目描述 给定一个 N M 的矩阵 A&#xff0c;请你统计有多少个子矩阵 (最小 1 1&#xff0c;最大 N M) 满足子矩阵中所有数的和不超过给定的整数 K? 输入格式 第一行包含三个整数 N, M 和 K. 之后 N 行每行包含 M 个整数&#xf…

Python基本运算

1.逻辑运算符 第四行会有黄色的下划线是因为这个不是系统推荐的写法&#xff0c;系统推荐的是第五行的链式比较&#xff1b; 2.短路求值 对于and而言&#xff0c;左边的语句是false&#xff0c;那么整体一定是false,右边的表达式就不会进行计算&#xff1b; 对于or而言&…

Nginx 简介

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.Nginx简介 Nginx具有轻量级、高性能和低内存占用等特点&#xff0c;可以在多核处理器上有效地分配负载。它可以作为静态内容服务器&#xff0c;也可以作为反向代理服务器&#xff0c;将请…

【软考】UML中的图之状态图

目录 1. 说明2. 图示 1. 说明 1.状态图&#xff08;State Diagram&#xff09;展现了一个状态机。2.由状态、转换、事件和活动组成。3.关注系统的动态视图。4.对于接口、类和协作的行为建模尤为重要。5.强调对象行为的事件顺序。6.通常包括简单状态和组合状态、转换&#xff0…

基于ssm的bbs论坛系统

开发环境&#xff1a;idea 前端&#xff1a;JQueryBootstraplayui后端&#xff1a;SpringSpringMVCMybatis数据库&#xff1a;mysqlredis 基于ssm的bbs论坛系统&#xff0c;功能有论坛、导读、动态、排行榜以及后台管理系统等等 话不多说&#xff0c;看图&#xff01;&#x…

13 完全分布式搭建-集群配置

1.集群部署规划 NameNode 和 SecondaryNameNode 不要安装在同一台服务器 ResourceManager 也很消耗内存&#xff0c;不要和 NameNode、SecondaryNameNode 配置在 同一台机器上。 在文章中与教材上有区别&#xff0c;在理论课上已讲解。 masterslave01slave02HDFS NameNode D…

初入C++

C 编译时的查找&#xff1a; 先到函数局部域里查找到全局域找 局部域和全局域会改变生命周期。 命名空间域不会影响变量的生命周期。 默认情况下不会到命名空间域去找。(命名空间域内的变量的生命周期是全局的&#xff0c;及不会出命名空间就销毁) 在不同的作用域可以定义同…

mysql主从复制、读写分离

一、主从复制架构和原理 1.1 主从复制类型 基于SQL语句的复制(STATEMENT默认) 基于行的复制(ROW&#xff09; 混合类型的复制(MIXED) 1.2主从复制的工作流程及原理 1.2.1 工作流程 ① 当数据来的时候&#xff0c;主服务器把操作记录二进制日志中&#xff0c;存储放入磁盘 ②…

SpringCloud Alibaba实战和源码(8)OpenFeign使用

1、 使用Feign实现远程HTTP调用 1.1、常见HTTP客户端 HttpClient HttpClient 是 Apache Jakarta Common 下的子项目&#xff0c;用来提供高效的、最新的、功能丰富的支持 Http 协 议的客户端编程工具包&#xff0c;并且它支持 HTTP 协议最新版本和建议。HttpClient 相比传统 J…