(JAVA)-(网络编程)-初始网络编程

网络编程就是在通信协议下,不同的计算机上运行的程序,进行的数据传输。

讲的通俗一点,就是以前我们写的代码是单机版的,网络编程就是联机版的。

应用场景:即时通信,网游对战,金融证券,国际贸易,邮件等等。

Java中可以使用java.net包下的技术轻松开发出常见的网络应用程序。

讲到应用程序,首先我们来了解一下常见的软件架构。

常见的软件架构:分为BS和CS

CS架构:C表示Client,表示客户端,S表示Server,就是服务器。这种架构的软件,需要用户在本地下载客户端程序,在远程有一个服务端程序。就像我们常用的qq,需要下载客户端进行使用。

BS架构:B表示Browser,表示浏览器,S表示Server,就是服务器。用户只需要一个浏览器,用户就可以通过不同的网址,访问不同的服务器。就像我们使用的淘宝网页版,4399小游戏,都使用的BS架构。

客户端和浏览器做到的仅仅是把数据展现出来给客户看,真正核心的逻辑是在服务器中。

BS/CS架构优缺点

BS架构:

优点:开发人员无需开发客户端,只需要开发页面加服务端。用户打开浏览器就可以使用,无需下载客户端,非常的方便。缺点:画面烂,音质差,因为浏览器中要显示的所有图片,音频资源在本地是没有的,都需要从服务器中用网络传输过来。

CS架构:

用户需要下载客户端,游戏需要的音频,画面文件都在安装包中,用户下载安装后就已经在用户本地了,当用户使用时就不需要把 文件从服务器中传输给客户端,只需要告诉该显示什么东西就可以了。优点:画面精美,用户体验好。缺点:开发人员需要开发客户端,同时需要开发服务端。并且用户下载和更新的时候太麻烦了。

网络编程三要素: 

假设我们要在网络上给对方发一条消息,我们得确定对方在互联网上的地址,地址是唯一的,叫ip,我们还得知道对方是用哪个软件接收,每个软件绑定的标识也叫端口号,我们还得确定网络传输的规则,也叫协议

1.ip:ip是上网设备在网络中的地址,是唯一的标识。

ip分为IPv4 和IPv6。

IPv4:

采用32位地址长度,分为四组,每一组转成十进制,再用 . 区分。举个例子。

每一组的取值都是正数,范围是0-255。

IPv4总共只有不到43亿个IP,是不够用的,事实上也是如此,在2019年11月26日ip已经被全部分配,因此诞生了IPv6。

那我们目前是如何IPv4不够的问题的呢?

IPv4地址分为公网地址(万维网使用)和私网地址(局域网使用)

192.168.开头的就是私有地址,范围即为192.168.0.0-192.168.255.255,专门为组织机构内部使用,以此节省ip。举个例子:就像网吧,有很多很多台电脑,但是他们公用同一个公网ip

再由路由器给每台电脑分配局域网ip,这样就能达到节约ip的过程。

有一个特殊ip:127.0.0.1,也可以是localhost,是回送ip地址,也称本机ip,永远只会寻找当前所在本机,朝这个ip发送消息,在经过网卡时候就会传送回来

Ipv6:

采用了128位地址长度,分为8组。使用冒分十六进制表示法。每一组用十六进制表示,用冒号分隔开,冒号前面的0可以省略,举个例子

如果计算出的十六进制中间还有很多的0,可以使用0位压缩法

2.端口号:应用程序在设备中的唯一标识。一个端口只能被一个应用程序使用

由两个字节表示的整数,取值范围:0-65535,其中0-1023之间的端口用于一些知名的网络服务或者应用,我们自己使用1024以上的端口就可以了

3.协议:数据在网络中传输的规则,常见的协议有UDP,TCP,http,https,ftp。

UDP协议:视频音频播放对于数据精确度要求没那么高的传输可以使用

TCP协议:传输的数据不能丢失数据,例如安装包等

常用的CMD命令:

ipconfig:查看本机ip地址

ping:检查网络是否联通

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

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

相关文章

arm day7

开关中断控制 main.c #include "key_it.h" #include "uart.h" void delay(int ms) {int i,j;for(i0;i<ms;i){for(j0;j<2000;j);} }int main() {key2_it_config();key1_it_config();key3_it_config();all_led_init();char buf[128];gets(buf); whil…

Android APK未签名提醒

最近新建了一个项目&#xff0c;在build.gradle中配置好了签名&#xff0c;在执行打包的时候打出的包显示已签名&#xff0c;但是在上传市场的时候提示未签名。于是排查了好久&#xff0c;发现在build.gradle中配置的minsdk 24&#xff0c;会导致不使用V1签名&#xff0c;于是我…

Kubernetes技术与架构-集群管理

Kubernetes技术与架构提供支撑工具支持集群的规划、安装、创建以及管理。 数字证书 用户可以使用easyrsa、openssl、cfssl工具生成数字证书&#xff0c;在kubernetes集群的api server中部署数字证书用于访问鉴权 资源管理 如上所示&#xff0c;定义一个服务类service用于负…

iptables防火墙(二)

目录 1、SNAT策略及应用 1.1、SNAT 策略概述 1.2、SNAT 策略的应用 2、DNAT 策略及应用 2.1、DNAT 策略概述 2.2、DNAT 策略的应用 3、规则的导出、导入 3.1、规则的备份及还原 3.2、使用 iptables 服务 4、使用防火墙脚本 4.1、防火墙脚本的构成 &#xf…

Python新姿势:用魔法方法玩转对象

文章目录 前言1\. 对象构建2\. 对象属性访问3\. 对象比较4\. 对象输出5\. 对象运算6\. 总结Python技术资源分享1、Python所有方向的学习路线2、学习软件3、入门学习视频4、实战案例5、清华编程大佬出品《漫画看学Python》6、Python副业兼职与全职路线 前言 Python中魔法方法&a…

百兆集成RJ45连接器电路设计原理

华强盛电子导读&#xff1a;HR911105A-H1159A01A-GY百兆网口带变压器原理 百兆集成RJ45连接器电路设计原理涉及到网络通信和电子工程领域。RJ45连接器是一种常见的网络连接器&#xff0c;广泛应用于以太网和其他网络通信中。 以下是百兆集成RJ45连接器电路设计的基本原理&…

C语言中的goto语句:使用、争议与最佳实践

各位少年&#xff1a; 引言&#xff1a; 在C语言编程中&#xff0c;goto语句是一个历史悠久且颇具争议的控制流结构。作为无条件跳转指令&#xff0c;它允许程序执行从当前点直接跳转到同一函数内的任意位置&#xff0c;由一个标签&#xff08;label&#xff09;来指定目标。尽…

冠赢互娱基于 OpenKrusieGame 实现游戏云原生架构升级

作者&#xff1a;力铭 关于冠赢互娱 冠赢互娱是一家集手游、网游、VR 游戏等研发、发行于一体的游戏公司&#xff0c;旗下官方正版授权的传奇类手游——《仙境传奇》系列深受广大玩家们的喜爱。基于多年 MMORPG 类型游戏的自研与运营经验&#xff0c;冠赢互娱正式推出了 2D M…

【数据结构】快速排序(4种方式实现)

前言&#xff1a;前面我们学习了几种相对比较简单的排序&#xff0c;今天我们要一起学习的是快速排序&#xff0c;我们将通过四种方式来模拟实现快排。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:数据结构 &#x1f448; &#x1f4a…

spring核心技术控制反转IoC详细使用教程包含例子

demo1: 初识IoC 创建对象: 传统方式 new 关键字 // 启动: 打开工程 =》idea . => 右键 MyTest1.java启动 =》 run // . // ├── main // │ ├── java // │ │ └── com // │ │ └── ahuang // │ │ ├── dao // │ │ …

java之树筛选

树结构&#xff1a; Data public class TreeNode {/*** 主键*/private String id;/*** 名称*/private String name;/*** 父节点id 最上层的父节点为0*/private String parentId;private List<TreeNode> children; } 方法1&#xff1a; public List<TreeNode> fi…

OpenCV(Python)基础—9小时入门版

OpenCV(Python)基础—9小时入门版 # # Author : Mikigo # Time : 2021/12/1 # 一、一句话简介 OpenCV (Open Source Computer Vision Library) 是用 C 语言编写&#xff0c;提供 Python、Java 等语言 API的一个开源计算机视觉库。 二、安装 1、Debian 系使用 apt 安装 O…

Innosetup 调用c# dll 和 c# dll的函数导出

目标需求&#xff0c;基于现在安装包脚本。需要在用户安装和卸载成功时。进行数据记录,所以需要调用c#dll 主要涉及到的知识点 需要理解脚本的文件使用机制脚本的文件dll加载&#xff0c;和dll的调用c# dll的制作&#xff0c;和工具的使用 下面具体介绍 脚本的文件dll加载&…

构建二叉树

二叉树深度&#xff1a; #include <iostream> #include <vector> #include <cmath> #include <sstream>using namespace std;struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} …

OSPF的DR与BDR-新版(16)

目录 整体拓扑 操作步骤 1.基本配置 1.1 配置R1的IP 1.2 配置R2的IP 1.3 配置R3的IP 1.4 配置R4的IP 1.5 检测R1与R4连通性 1.6 检测R1与R2连通性 1.7 检测R1与R3连通性 2.搭建基本的OSPF网络 2.1 配置R1 OSPF 2.2 配置R2 OSPF 2.3 配置R3 OSPF 2.4 配置R4 OSPF…

Java解决爬楼梯问题

Java解决爬楼梯问题 01 题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶…

八皇后问题(C语言)

了解题意 在一个8x8的棋盘上放置8个皇后&#xff0c;使得任何两个皇后都不能处于同一行、同一列或同一斜线上。问有多少种方法可以放置这8个皇后&#xff1f; 解决这个问题的目标是找到所有符合要求的皇后摆放方式&#xff0c;通常使用回溯算法来求解。回溯算法会尝试所有可能…

数据结构之树 --- 二叉树 < 堆 >

目录 1. 树是什么&#xff1f; 1.1 树的表示 2. 二叉树 2.1 二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储结构 2.4.1 顺序存储 2.4.2 链式存储 3. 二叉树顺序结构的实现 <堆> 3.1 二叉树的顺序结构 ​编辑 3.2 堆的概念及结构 ​编辑…

Appium+python自动化(八)- 初识琵琶女Appium(千呼万唤始出来,犹抱琵琶半遮面)- 下(超详解)

简介 通过上一篇宏哥给各位小伙伴们的引荐&#xff0c;大家移动对这位美女有了深刻的认识&#xff0c;而且她那高超的技艺和婀娜的身姿久久地浮现在你的脑海里&#xff0c;是不是这样呢&#xff1f;&#xff1f;&#xff1f;不要害羞直接告诉宏哥&#xff1a;是&#xff0c;就对…

D. X-Sum 求矩形里面斜线的和的最大值

题目 &#xff1a; https://codeforces.com/contest/1676/problem/D 思想&#xff1a;暴力&#xff0c;但是要注意很多细节&#xff0c;每次把当前点要走的下一步作为起点开始斜线遍历&#xff0c;这样可以有效避免越界问题&#xff0c;并且最后只用加上当前数。 代码&#…