《从零开始的Java世界》11网络编程

《从零开始的Java世界》系列主要讲解Javase部分,从最简单的程序设计到面向对象编程,再到异常处理、常用API的使用,最后到注解、反射,涵盖Java基础所需的所有知识点。学习者应该从学会如何使用,到知道其实现原理全方位式地学习,才能为以后框架的学习打下良好的基础。

目录

1.网络编程概述

2.InetAddress类

3.TCP与UDP协议

3.1TCP

3.2UDP

4.Socket相关类API

4.1通信模型

4.2ServerSocket类

4.2.1Socket类


1.网络编程概述

2.InetAddress类

@Test
public void test() throws UnknownHostException {
    //获取IP地址对象实例
    InetAddress inet1 = InetAddress.getByName("192.168.0.1");
    System.out.println(inet1);
    //获取域名对象实例
    InetAddress inet2 = InetAddress.getByName("www.baidu.com");
    System.out.println(inet2);
    //获取本机IP地址实例
    InetAddress inet3 = InetAddress.getLocalHost();
    System.out.println(inet3);
}

3.TCP与UDP协议

3.1TCP

3.2UDP

4.Socket相关类API

4.1通信模型

4.2ServerSocket类

4.2.1Socket类

public class TCPTest {
    //模拟网络传输的方式 复制一张本地图片
    //客户端
    @Test
    public void client() throws IOException {
        //1.创建Socket
        InetAddress inetAddress = InetAddress.getByName("127.0.0.1");
        int port = 9090;
        Socket socket = new Socket(inetAddress,9090);
        //2.创建File实例
        File file = new File("copy_sdz.jpg");
        FileInputStream fis = new FileInputStream(file);
        //3.通过Socket获取输出流
        OutputStream os = socket.getOutputStream();
        //读写数据
        byte[] buffer = new byte[1024];
        int len;
        while((len = fis.read(buffer)) !=-1 ){
            os.write(buffer,0,len);
        }
        System.out.println("数据发送完毕");
        //4.关闭相关流
        os.close();
        fis.close();
        socket.close();
    }

    //服务端
    @Test
    public void server() throws  IOException{
        //1.创建ServerSocket
        ServerSocket serverSocket = new ServerSocket(9090);
        //2.接收来自客户端的socket
        Socket socket = serverSocket.accept();
        //3.通过socket获取一个输入流
        InputStream is = socket.getInputStream();
        //4.创建File类实例
        File file = new File("TCP_copy.jpg");
        FileOutputStream fos = new FileOutputStream(file);
        //5.读写过程
        byte[] buffer = new byte[1024];
        int len;
        while((len = is.read(buffer)) != -1){
            fos.write(buffer,0,len);
        }
        System.out.println("数据接收完毕");
        //6.关闭相关流
        fos.close();
        is.close();
        socket.close();
        serverSocket.close();
    }

}

内容来源于尚硅谷javase课程的ppt,仅作为学习笔记参考

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

打开IIS网站网页错误提示Argument ‘Key must not be null‘ cannot be null.解决方案 Oracle数据库监听

打开网页异常如下: /“应用程序中的服务器错误。 Argument Key must not be null cannot be null.参数名:Key must not be null 客户端 连接oracle 提示:ORA-12541:TNS:无监听程序 按组合键WindowsR,打开运行 输入命令:lsnrctl s…

周报不止是汇报进度,如何用周报轻松提升团队协作效率?

周报是工作中常见的沟通工具,对于项目经理来说尤其重要。写周报不仅仅是为了完成一项任务,它更是项目管理中不可或缺的环节,它不仅有助于项目经理跟踪项目进度,还加强了团队成员间的沟通与协作。以下是几个关键的原因:…

Geoserver的RESTful接口使用

概述 GeoServer提供了一个RESTful接口,客户端可以通过该接口获取有关实例的信息并进行配置更改。REST接口使用简单的HTTP调用,通过客户端就可以配置GeoServer,而无需使用Web管理接口。 Geoserver中的关系 工作区、数据源、图层、图层组以及…

用 LMDeploy 高效部署 Llama-3-8B,1.8倍vLLM推理效率

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总…

微信小程序Vue+nodejs+uniapp课堂教学辅助在线学习系统

uni-app框架:使用Vue.js开发跨平台应用的前端框架,编写一套代码,可编译到Android、小程序等平台。 后台主要实现功能:一、用户的管理(用户的信息管理) 二、 课程的管理(课程发布,课后成绩的查看&#xff0c…

【C语言__联合和枚举__复习篇10】

目录 前言 一、联合体 1.1 联合体的概念 1.2 联合体与结构体关于声明和内存布局的比较 1.3 联合体的大小如何计算 1.4 使用联合体的2个示例 二、枚举体 2.2 枚举体的概念 2.2 枚举体的优点 前言 本篇主要讨论以下问题: 1. 联合体是什么,它有什么特点 …

每天一题crypto(1)---RSA(小明文攻击)

零.做题: 看到N很大,如果满足 就表示模过程中,没有丢失信息,所以 直接解即可,不要管pq等等 一.题目: N很大 from Crypto.Util.number import * from gmpy2 import *flag bNSSCTF{******}p getPrime(5…

【SpringBoot整合系列】SpringBoot配置多数据源

目录 背景技术选型配置多数据源思路(以两个为例)代码实现1.导入依赖2.各自的配置 3.各自的dataSourcenews数据库的smbms数据库的注意:Primary注解 4.各自的SqlSessionFactory等news数据库的smbms数据库的 5.去掉启动类头上的MapperScan6.各自的mapper接口7.各自的ma…

防火墙分为哪三类以及他们的优缺点

1. 包过滤防火墙(Packet Filtering Firewall)2. 状态检查防火墙(Stateful Inspection Firewall)3. 应用层防火墙(Application Layer Firewall)零基础入门学习路线视频配套资料&国内外网安书籍、文档网络…

Spring Cloud Alibaba Sentinel 使用

初识Sentinel Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址: home | Sentinel 需要了解的概念 簇点链路 在学习 Sentinel 的使用之前,我们有必要首先了解一下簇点链路。当请求进入微服务时,首先会访Controller、Service、Ma…

C++11可变模板参数

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

百面算法工程师 | 卷积基础知识——Convolution

目录 8.1 图像卷积过程 8.2 卷积层基本参数 8.3 卷积后图像的长和宽大小的计算方式 8.4 卷积神经网络中的权重共享 8.5 上采样中的反卷积 8.6 空洞卷积 8.7 深度可分离卷积 8.8 为什么可分离卷积中Depthwise卷积后还要进行pointwise卷积 8.9 分组卷积 Group Conv 8.1…

前端导入的方便方法

直接上代码: 利用input的导入功能 这是相应的处理方法 是不是很简单呢

《系统架构设计师教程(第2版)》第10章-软件架构的演化和维护-01-软件架构演化概述

文章目录 1. 演化的重要性2. 架构演化示例 教材中,本节名为:“软件架构演化和定义的关系” 1. 演化的重要性 演化目的:维持软件架构自身的有用性 为什么说,软件架构是演化来的,而不是设计来的? 软件架构的…

【Shell】循环结构——for和while循环实例

Shell可以重复地执行特定的指令,直到特定的条件被满足为止。这重复执行的一组指令就叫做循环 特点: 首先,循环条件中使用的变量必须是已初始化的,然后在循环中开始执行每次在循环开始时进行一次测试重复地执行一个代码块 循环实例…

SD-WAN怎样提高企业网络体验

随着数字化转型的加速,传统基于MPLS的专用网络因其高度的结构化和僵化性,已无法满足现代企业对于灵活性和成本效益的日益增长的需求。相比之下,SD-WAN作为一种创新的网络架构,正以其卓越的性能和灵活的管理方式,成为企…

服务于金融新核心系统 星辰天合与中电金信完成产品兼容认证

近日,北京星辰天合科技股份有限公司(简称:XSKY星辰天合)与中电金信软件有限公司(简称:中电金信)完成产品兼容性认证,星辰天合的企业级分布式统一数据平台 XEDP 符合金融级数字底座&q…

ECG-Emotion Recognition(情绪识别)-- 数据集介绍WESADDREAMER

1、WESAD数据集 下载链接:WESAD: Multimodal Dataset for Wearable Stress and Affect Detection | Ubiquitous Computing (1)基本介绍 WESAD是一个用于可穿戴压力和影响检测的新的公开数据集。该多模式数据集以实验室研究期间15名受试者的生…

学习JFinal

1.五个配置类 configConstants(配置): configRoute(路由): 2.Controller层(控制器) 访问流程: Action: getPara: 参数说明:第一个参…

13.Blender 界面介绍(下) 雕刻、纹理绘制及属性

界面介绍 1. 布局 物体的移动旋转和缩放等操作 2. 建模 里面就是有一些建模常用的功能 里面的功能对于做MMD来说不是必备的操作 3. 雕刻 使用里面的工具可以对物体本身进行修改 4. UV编辑 如果想要编辑UV贴图 将编辑模式改为纹理绘制 再点击右边的工具 如果进行编…