4.14日网络编程学习

1.网络编程三要素

1.IP地址:

IP地址:指互联网协议地址(Internet Protocol Address),俗称IP。要想使网络中的计算机能够进行通信,必须为每台计算机指定一个标识号,通过这个标识号来指定接受数据的计算机或者发送数据的计算机。

在TCP/IP协议中,这个标识号就是IP地址,它可以唯一标识一台计算机,目前,IP地址广泛使用的版本是IPv4,它是由4个字节大小的二进制数来表示,如:00001010000000000000000000000001。由于二进制形式表示的IP地址非常不便记忆和处理,因此通常会将IP地址写成十进制的形式,每个字节用一个十进制数字(0-255)表示,数字间用符号“.”分开,如 “192.168.1.100”。

随着计算机网络规模的不断扩大,对IP地址的需求也越来越多,IPV4这种用4个字节表示的IP地址面临枯竭,因此IPv6 便应运而生了,IPv6使用16个字节表示IP地址,它所拥有的地址容量约是IPv4的8×1028倍,达到2128个(算上全零的),这样就解决了网络地址资源数量不够的问题。

说白了,IP其实就是每个设备在网络中的编号

2.端口:

网络的通信,本质上是两个进程(应用程序)的通信。每台计算机都有很多的进程,那么在网络通信时,如何区分这些进程呢?

如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程(应用程序)了。

3.网络通信协议

提到传输层的两个重要的高级协议,分别是UDP和TCP,其中UDP是User Datagram Protocol的简称,称为用户数据报协议,TCP是Transmission Control Protocol的简称,称为传输控制协议。

2.首先来进行IP的学习

想要对IP进行操作,就避不开要用InetAdress这个类

import java.net.InetAddress;
import java.net.UnknownHostException;public class inetaddress {public static void main(String[] args) throws UnknownHostException {//1.获取inetAddress对象//IP的对象,也可以说是一台电脑的对象InetAddress address=InetAddress.getByName("192.168.50.155");//DESKTOP-D4I5DGV   电脑名InetAddress address1=InetAddress.getByName("DESKTOP-D4I5DGV");System.out.println(address1);//获取主机名String s=address.getHostName();System.out.println(s);//返回文本中显示的IP字符串(获取电脑对象的IP)String str=address.getHostAddress();System.out.println(str);}
}

3.UDP

1.UDP的发送信息

步骤:1.创建对象

            2.打包数据

           3.发送数据

           4.清除缓存

public class SendTest {//发送数据public static void main(String[] args) throws IOException {//1.创建对象DatagramSocket ds=new DatagramSocket();//2.打包数据Scanner sc=new Scanner(System.in);while (true) {String str=sc.nextLine();if("886".equals(str)){break;}byte[] bytes=str.getBytes();InetAddress ia=InetAddress.getByName("127.0.0.1");int port=10086;DatagramPacket dp=new DatagramPacket(bytes,bytes.length,ia,port);//3.发送数据ds.send(dp);}//4.清除缓存ds.close();}
}

2.UDP的接受消息

步骤:

1.创建对象

2.接受消息

3.解压消息

4.释放内存

public class ReceiveTest {public static void main(String[] args) throws IOException {//接受数据//1.创建对象DatagramSocket ds=new DatagramSocket(10086);//2.接受数据byte[] bytes=new byte[1024];DatagramPacket dp=new DatagramPacket(bytes, bytes.length);//while (true) {ds.receive(dp);//3.解压数据byte[] data= dp.getData();int len= dp.getLength();InetAddress ia=dp.getAddress();int port=dp.getPort();System.out.println(new String(data,0,len));
//            System.out.println(ia);
//            System.out.println(port);//}//4.释放内存ds.close();}
}

4.UCP

考察的主要是服务器与客户端,因此我们需要做一个服务器与客户端

1.客户端

public class Client {//TCP协议客户端,用来发送数据public static void main(String[] args) throws IOException {//1.创建socket对象//细节:在创建对象的同时,会连接服务器,如果连接不上,则报错Socket socket=new Socket("127.0.0.1",10006);//服务器的IP,以及链接的端口//2.从连接通道中获取输出流OutputStream os=socket.getOutputStream();//写出数据os.write("你好".getBytes());//3.释放资源os.close();socket.close();}
}

2.服务器 

public class Server {//TCP协议服务端,用于接受消息public static void main(String[] args) throws IOException {//1.创建服务器 ServerSocket//链接的端口必须与用户端一致ServerSocket ss=new ServerSocket(10006);//2.监听客户端链接Socket socket=ss.accept();//3.从连接通道中获取输入流,读取数据InputStream is=socket.getInputStream();//用转换流,将字节流变成字符流InputStreamReader isr=new InputStreamReader(is);int b;while(((b=isr.read()))!=-1){System.out.print((char)b);}//4.释放资源socket.close();ss.close();}
}

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

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

相关文章

Java基础习题及参考代码(数组)

二白整理了一些关于数组的习题,本人也逐个完成,有需要的同学自取,答案仅供参考。 01:对10个整数进行按照从小到大的顺序排序 package Practise;/*** JdkVersion: 17* Author: 二白程序员* Date 2024/4/8 13:24* QQ:…

MySQL-触发器

一、概述: Ⅰ、触发器是由 事件来触发 某个操作,这些事件包括 INSERT 、 UPDATE 、 DELETE 事件。就是指 用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生 了,就会 自动 …

Spring Cloud 集成 RabbitMQ

目录 前言步骤引入相关maven依赖添加相关配置 使用方法配置消息序列化创建第一个消息队列和交换机使用方法 总结 前言 在当今的微服务架构盛行的时代,消息队列作为一种重要的通信机制,在分布式系统中扮演着不可或缺的角色。RabbitMQ,作为一款…

ASP.NET公交车管理系统的实现与设计

摘 要 随着经济的日益增长,信息化时代已经到来,生活中各种信息趋向数字化、清晰化。公交车作为现代城市生活中一种重要的交通工具,其数量增多,车型也不再单一,雇用的司机增多,这样使得公交车公司的车辆信…

XTTS数据迁移方案

前置条件检查 XTTS使用限制较多,V3版本按照本节逐项检查 目标库操作系统不能是windows 源库:redhut 7.9 目标库:redhut 7.9 检查数据库时区(两边都需要) SQL> select dbtimezone from dual; 检查结果两边都一致…

系统架构设计与优化的几个关键点

1. 业务理解与需求分析 业务场景梳理:深入理解业务流程、业务规则、用户行为模式等,明确系统需要支持的核心功能和应用场景。非功能性需求识别:关注性能指标(如响应时间、并发处理能力、数据吞吐量等)、可用性要求&am…

机器学习和深度学习--李宏毅 (笔记与个人理解)Day 16

Day 16 deep Learning – 鱼与熊掌兼得 最近在减重, 昨天跑了个一公里,然后今天上午又打了个篮球,真是老胳膊老腿了,运动完给我困得不行 Review 见前面的笔记 这里说dl 会提供一个足够大的模型, 来使得Dall loss 足够小…

创业之路:从市场洞察到产品实现的全方位指南

创业是一项挑战性的旅程,需要综合考虑市场、产品、技术、团队等多个方面。在这篇文章中,我们将深入探讨如何更好地进行创业,从市场分析到产品实现的各个环节。 深入市场洞察 在创业之前,深入了解目标市场是至关重要的。我们需要…

Unity类银河恶魔城学习记录12-14 p136 Merge Skill Tree with Sword skill源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili CharacterStats.cs using System.Collections; using System.Collections.…

如何在CentOS中开放指定端口

本文将介绍在CentOS中如何通过firewalld和iptables开放指定端口。 一. firewalld 在CentOS系统中,firewalld是一个动态管理防火墙的守护进程,它提供了一个更加灵活和强大的防火墙管理工具。 以下是在CentOS 7和CentOS 8中使用firewalld开放指定端口的…

【Ubuntu】在 Windows 和 Ubuntu 之间传输文件

在 Ubuntu 上安装 Samba: sudo apt-get update sudo apt-get install samba在 Ubuntu 上创建一个共享文件夹并设置权限: mkdir /home/your_username/shared sudo chown nobody:nogroup /home/your_username/shared sudo chmod 0777 /home/your_username/…

【氮化镓】GaN HEMTs结温和热阻测试方法

文章《Temperature rise detection in GaN high-electron-mobility transistors via gate-drain Schottky junction forward-conduction voltages》,由Xiujuan Huang, Chunsheng Guo, Qian Wen, Shiwei Feng, 和 Yamin Zhang撰写,发表在《Microelectroni…

绿联HDMI延长器40265使用AG7120芯片放大器方案

HDMI延长器和放大器 延长器:主要用于HDMI线的延长,有HDMI对接头方式延长,或HDMI公头加HDMI母头的HDMI线进行延长,或通过网线方式延长,早期为双网线,目前已发展为单网线,需要注意的是&#xff0…

NLP_知识图谱_图谱问答实战

文章目录 图谱问答NERac自动机实体链接实体消歧 多跳问答neo4j_graph执行流程结构图![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1577c1d9c9e342b3acbf79824aae980f.png)company_data![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/20f567d877c743b…

前后端AES对称加密 前端TS 后端Go

注意点 前后端的秘钥和偏移量IV都必须是16/24/32字节,且需要保持一致。 后端 func (receiver *basicUtils) AesDecrypt(str string) string {// 将加密字符串转换为字节数组encryptedData, _ : base64.StdEncoding.DecodeString(str)// 创建一个新的AES解密器key…

【core analyzer】core analyzer的介绍和安装详情

目录 🌞1. core和core analyzer的基本概念 🌼1.1 coredump文件 🌼1.2 core analyzer 🌞2. core analyzer的安装详细过程 🌼2.1 方式一 简单但不推荐 🌼2.2 方式二 推荐 🌻2.2.1 安装遇到…

TCP/IP 协议栈在 Linux 内核中的 运行时序分析

1、Linux内核概述 1.1 Linux内核结构 一个完整的Linux内核一般由5部分组成,它们分别是内存管理、进程管理、进程间通信、bai虚拟文件系统和网络接口。 1、内存管理 内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子…

数据可视化基础与应用-04-seaborn库人口普查分析--如何做人口年龄层结构金字塔

总结 本系列是数据可视化基础与应用的第04篇seaborn,是seaborn从入门到精通系列第3篇。本系列主要介绍基于seaborn实现数据可视化。 参考 参考:我分享了一个项目给你《seaborn篇人口普查分析–如何做人口年龄层结构金字塔》,快来看看吧 数据集地址 h…

B3647 【模板】Floyd

【模板】Floyd 题目描述 给出一张由 n n n 个点 m m m 条边组成的无向图。 求出所有点对 ( i , j ) (i,j) (i,j) 之间的最短路径。 输入格式 第一行为两个整数 n , m n,m n,m,分别代表点的个数和边的条数。 接下来 m m m 行,每行三个整数 u …

dalle2介绍

dalle2是一个基于强化学习的图像生成模型,是dalle模型的改进版本。它由OpenAI团队开发,旨在生成高质量的、多样化的图像。 dalle2的核心思想是利用强化学习将图像生成过程转化为一个马尔可夫决策过程。它采用了一个称为"敌对生成网络"&#x…