4.11总结

IO流和网络编程

IO流

IO流根据流的类型分为两种:

一种是输入流,另一种是输出流

输入流只能用来读取数据,输出流只能用来写入数据。

IO流存在两种操作文件类型:

字节流和字符流

字符流只能用于纯文本操作,而字节流较为全面,可以用于视频、文本等操作

字节流一次只能读取一个byte,字符流一次可以读取多个byte

字节流:

FileOutputStream

FileInputStream

字符流:

Reader

Writer

为了满足更多的需求,还创建了一种缓冲流,如字符缓冲流、字节缓冲流

例:

BufferFileOutputStream

BufferFileInputStream

缓冲流的存在是为了能够处理更多的数据,在数据与对象传输数据时读取一块空间,不断存入数据,以便能够一次性处理更多的数据,提高程序的效率。

字节流代码示例:

//使用字节流进行简单的文件拷贝
public class filethree {public static void main(String[] args) throws IOException {FileInputStream f =new FileInputStream("start\\a.txt");FileOutputStream ff =new FileOutputStream("start\\c.txt");int aa;while((aa=f.read())!=-1){ff.write(aa);}ff.close();f.close();}
}//一次性读取多个字节
public class filefive {public static void main(String[] args) throws IOException {long start =System.currentTimeMillis();FileInputStream f=new FileInputStream("start\\a.txt");FileOutputStream ff=new FileOutputStream("start\\c.txt");int len;byte[] bytes=new byte[1024*1024*5];while((len=f.read())!=-1){ff.write(bytes,0,len);}f.close();ff.close();long end=System.currentTimeMillis();System.out.println(end-start);}
}

字符流代码示例:

public class ReadFileExample {public static void main(String[] args) {try (Reader reader = new FileReader("example.txt","utf-8")) {char[] buffer = new char[1024];int length;while ((length = reader.read(buffer)) != -1) {String str = new String(buffer, 0, length);System.out.print(str);}} catch (IOException e) {e.printStackTrace();}}
}public class WriteFileExample {public static void main(String[] args) {String content = "这是要写入文件的内容";try (Writer writer = new FileWriter("example.txt")) {writer.write(content);} catch (IOException e) {e.printStackTrace();}}

缓冲流代码示例:

public static void main(String[] args) throws IOException {BufferedInputStream bis=new BufferedInputStream(new FileInputStream("start\\a.txt"));BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("start\\c.txt"));byte[] bytes=new byte[2];int len;while((len=bis.read())!=-1){bos.write(bytes,0,len);}bos.close();bis.close();}
}

网络编程

网络编程就是计算机和计算机之间通过网络进行数据传输

网络编程的三要素

IP端口号协议

每一台电脑都有着独属于自己的IP地址

IP地址和端口号是计算机网络中的重要概念,它们用于在网络上唯一标识一个通信实体或进程。

IP地址是指互联网协议地址,它是由32位二进制数表示的,通常使用点分十进制数表示。IP地址的作用是用来标识网络上的设备,类似于电话号码,可以用来进行网络通信。在通信过程中,源设备通过IP地址找到目的设备,然后发送数据。

端口号则是指在一个设备中运行的应用程序的标识符,它是一个16位的整数(0~65535)。每个端口号都对应着一个特定的应用程序,例如HTTP应用使用80端口,FTP应用使用21端口等。在通信过程中,源设备通过端口号找到目的设备上的特定应用程序,然后将数据传送给它。

IP地址和端口号的组合可以唯一地标识一个通信实体或进程,因此在进行网络通信时,需要同时指定通信双方的IP地址和端口号。

当用户在浏览器中输入域名时,浏览器会向DNS服务器发送请求,以获取对应的IP地址。因此,域名与IP地址是一一对应的关系。从技术上来说,一个域名可以对应多个IP地址,这是为了实现负载均衡和故障转移等目的,但通常情况下,一个域名只对应一个IP地址。

而端口号则用于标识设备中运行的具体应用程序。同一个设备上运行的不同应用程序会使用不同的端口号进行区分。在进行网络通信时,源设备通过IP地址和端口号找到目标设备上特定的应用程序,然后将数据传送给它。

协议:

TCP和UDP

在服务器之间进行数据传送时,TCP的速度慢于UDP,但是UDP在传输过程中不会管理数据,会导致传输完成后有大量包丢失,而TCP虽然速度稍慢与UDP,但是其具有高安全性,丢失的数据少,目前使用的范围更广

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的传输层协议。它在互联网上广泛应用于数据传输中,例如 HTTP、FTP 等应用层协议都是基于 TCP 协议工作的。

TCP 协议的主要特点包括:

  1. 面向连接:在进行数据通信前,需要先通过三次握手建立连接,连接成功后才能进行数据传输。
  2. 可靠性:TCP 提供可靠的数据传输,这是通过利用确认、重传等机制来实现的。
  3. 拥塞控制:TCP 通过拥塞窗口、慢启动以及拥塞避免等机制来有效地控制网络拥塞。
  4. 流量控制:TCP 通过滑动窗口机制来实现流量控制,保证数据接收方不会被发送方的数据淹没。

TCP 协议的通信过程分为三个阶段:建立连接、数据传输和断开连接。建立连接时,客户端向服务端发送 SYN 报文,服务端收到后回复一个 SYN+ACK 报文,客户端再向服务端发送一个 ACK 报文,这个过程就是三次握手。之后就可以进行数据传输,数据传输完毕后,双方可以通过四次挥手的方式来断开连接。

常见的TCP协议

  1. HTTP(Hypertext Transfer Protocol,超文本传输协议):用于在客户端和服务器之间传输超文本、图片、音频、视频等各种类型的数据。
  2. HTTPS(Hypertext Transfer Protocol Secure,安全的超文本传输协议):是基于 SSL/TLS 加密传输的 HTTP 协议,可以保证在网络传输过程中的数据安全。
  3. FTP(File Transfer Protocol,文件传输协议):用于在网络上进行文件传输。
  4. SMTP(Simple Mail Transfer Protocol,简单邮件传输协议):用于发送电子邮件。
  5. POP3(Post Office Protocol version 3,邮局协议第3版):用于接收电子邮件。
  6. IMAP(Internet Message Access Protocol,Internet消息访问协议):也是用于接收电子邮件的协议,相比 POP3 具有更多的功能。
  7. DNS(Domain Name System,域名系统):将域名解析成 IP 地址。
  8. Telnet:用于远程登录到其他计算机。

除此之外,实验室的学长进行了服务器创建教学,教会了我们如何手敲一个简单的服务器

服务器发送端代码:

public class Net2 {public static void main(String[] args) throws IOException {DatagramSocket ds=new DatagramSocket();Scanner sc=new Scanner(System.in);while (true) {System.out.println("请输入要说的话");String str=sc.nextLine();if("886".equals(str)){break;}byte[] bytes=str.getBytes();InetAddress address=InetAddress.getByName("127.0.0.1");int port=10086;DatagramPacket dp=new DatagramPacket(bytes,bytes.length,address,port);ds.send(dp);}}
}

服务器接收端代码:

public class MyNet2 {public static void main(String[] args) throws IOException {DatagramSocket ds=new DatagramSocket(10086);byte[] bytes=new byte[1024];DatagramPacket dp=new DatagramPacket(bytes,bytes.length);while (true) {ds.receive(dp);byte[] data=dp.getData();int len=dp.getLength();String ip=dp.getAddress().getHostAddress();String name=dp.getAddress().getHostName();System.out.println(ip+name+new String(data,0,len));}}
}

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

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

相关文章

SOLIDWORKS特色功能介绍

SOLIDWORKS是一款功能强大的三维CAD设计软件,广泛应用于机械设计、工程分析、产品数据管理和仿真等多个领域。该软件以其用户友好的界面、丰富的功能和性能,赢得了全球数百万工程师和设计人员的青睐。接下来,我们将详细介绍SOLIDWORKS的一些特…

Vue前端框架

1.vue基本使用1 1.vue环境搭建 一般创建vue项目是在cmd命令中用:vue ui 命令,采用ui图形界面的方式直观创建项目。 2.vue基本使用方式:vue组件 3.文本插值 4.属性绑定 5.事件绑定 6.双向绑定 7.条件渲染 2.vue基本使用2 1.axios 安装axios命令…

引领车载影像革命,全链路解决方案助力座舱创新升级

影像技术的创新与突破正在引领各行各业的飞速发展,尤其对于汽车行业来说,车载影像系统已成为衡量车辆智能化水平的重要指标。为了满足这一日益增长的需求,美摄科技凭借深厚的研发实力与创新精神,推出了全链路的车载影像解决方案&a…

uniapp开发小程序,实现堆叠卡片轮播图

一、实现堆叠卡片轮播图: 需求: 实现堆叠轮播图效果堆叠到后面的图片有虚化效果可以在堆叠图片上写文字或叠加图片等效果可以手动滑动&#xff0c;也可以定时自动轮播 二、代码实现&#xff1a; 1.封装一个组件myswiper.vue <!-- 折叠轮播图 组件--> <template>…

如何在SFTP工具中使用固定公网地址远程访问内网Termux系统

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP&#xff08;SSH File Transfer Protocol&#xff09;是一种基于SSH&#xff08;Secure Shell&#xff09;安全协议的文件传输协议。与FTP协议相比&#xff0c;SFTP使用了…

AD23原理图导入pcb是元器件位置错乱

1、原因是原理图和PCB没有进行连接导致的&#xff0c;可通过以下方法解决&#xff1a; 1>PCB返回到初始的形态&#xff0c;不可出现报错等问题&#xff0c;选择器件连结&#xff1b; 执行快捷键C --> K&#xff0c;将所有匹配组件进行回退&#xff0c;如下图&#xff1…

【Python】类和对象

类和对象 构造方法封装继承多继承 多态 类&#xff1a; 类是一个模板&#xff0c;描述一类对象的行为和状态。 有了模板我们就可以根据这个模板创建具体的对象。 对象&#xff1a; 对象是类的一个具体实例&#xff0c;有状态和行为。 class 类名称: 类的属性类的行为 # 其中 c…

如何在公网环境远程管理内网Windows系统部署的MongoDB数据库

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…

阿里面试总结 一

写了这些还是不够完整&#xff0c;阿里 字节 卷进去加班&#xff01;奥利给 ThreadLocal 线程变量存放在当前线程变量中&#xff0c;线程上下文中&#xff0c;set将变量添加到threadLocals变量中 Thread类中定义了两个ThreadLocalMap类型变量threadLocals、inheritableThrea…

数据知识产权登记前为何需要区块链存证_存储在国外的数据可以做数据资产登记证申请码

各地已公布的管理办法中&#xff0c;均把“数据区块链存证或公证”证明材料做为向各地数据知识产权登记部门提交登记申请表中必要材料之一。北京市数据知识产权登记管理办法要求&#xff1a;有下列情况之一的&#xff0c;不予登记&#xff1a;&#xff08;三&#xff09;登记前…

【SpringBoot】-- mapstruct进行类型转换时Converter实现类不能自动生成代码问题解决

问题描述 我的问题如下&#xff1a; 应该在红色区域生成对应的转换细节&#xff0c;但是这里只返回了一个空对象 问题解决 加入lombok-mapstruct-binding依赖,也要注意依赖引用顺序问题 <dependency><groupId>org.projectlombok</groupId><artifactId&…

uniapp项目引入组件

1、在项目新建文件uni_modules 2、通过uniapp官网查找组件 uni-app官网 3、下载组件 4、将下载好的组件放到步骤1创建的uni_modules目录下 5、在hbuilderX中重新运行小程序

LangFriend - 一款Long-Term Memory 的日历应用

文章目录 学术工作公司为什么要使用日记应用程序&#xff1f;定制总结 本文翻译整理自&#xff1a; https://blog.langchain.dev/langfriend/ (发布于2024 年 3 月 28 日) 在LangChain我们最感兴趣的概念之一就是内存。 每当我们对一个概念感兴趣时&#xff0c;我们都喜欢构建一…

子域名是什么?有什么作用?

在互联网世界中&#xff0c;域名是我们访问网站的关键。每一个公司的网站都需要拥有自己的域名&#xff0c;其中有些大型公司的网站还不止一个域名&#xff0c;除了主域名外还拥有子域名。有些人感到非常困惑&#xff0c;不知道子域名是什么。其实子域名也就是平时所说的二级域…

不可错过的3D建模素材网站,让设计更加丰富多彩!

3D建模已经渗透到了各个行业和领域&#xff0c;从游戏设计、室内设计到建筑设计&#xff0c;3D模型的使用越来越广泛。然而&#xff0c;创建出优秀的3D模型就需要大量的优质3D建模素材。幸运的是&#xff0c;有一些网站提供了大量的高质量3D建模素材&#xff0c;这些都是我们设…

C语言 | Leetcode C语言题解之第20题有效的括号

题目&#xff1a; 题解&#xff1a; char pairs(char a) {if (a }) return {;if (a ]) return [;if (a )) return (;return 0; }bool isValid(char* s) {int n strlen(s);if (n % 2 1) {return false;}int stk[n 1], top 0;for (int i 0; i < n; i) {char ch pair…

AI 对话完善【人工智能】

AI 对话【人工智能】 前言版权开源推荐AI 对话v0版本&#xff1a;基础v1版本&#xff1a;对话数据表tag.jsTagController v2版本&#xff1a;回复中textarea.jsChatController v3版本&#xff1a;流式输出chatLast.jsChatController v4版本&#xff1a;多轮对话QianfanUtilChat…

c++的友元函数,详细笔记,细说三种友元用法

解释友元 友元用通俗易懂的话来说&#xff0c;就是&#xff1a;当有人来到你家里&#xff0c;他就只能呆在客厅里面&#xff0c;你是不可能让他来到你的卧室之中的。但是如果这个人是你的朋友&#xff0c;那么你是默许他可以进入你的卧室的。 此时呢&#xff1f;我告诉你&…

SpringBoot+Vue,轻松实现网页版人脸登录与精准识别

目录 1、技术介绍 2、技术原理 2.1、人脸检测 ①参考模板法 ②人脸规则法 2.2、人脸跟踪 2.3、人脸比对 ①特征向量法 ②面纹模板法 识别过程 案例 一、springboot后端项目 1&#xff0c;拉取项目后&#xff0c;导入相关依赖jar包 2&#xff0c;执行sql文件夹下面…

智能运维场景 | 科技风险预警,能实现到什么程度?

[ 原作者&#xff1a;擎创夏洛克&#xff0c;本文略做了节选和改编 ] 每次一说到“风险预警”&#xff0c;就会有客户问我们能做怎样的风险预警。实际上在智能运维厂商来说&#xff0c;此风险非彼风险&#xff0c;不是能做银行的业务上的风险预警&#xff08;比如贷款风险等&a…