-
网络编程
1.1 概述
计算机网络
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
传播信息(数据交换、通信)
1.2 网络通信的要素
-
IP 和 端口号
-
网络通信协议
1.3 IP
-
唯一定位一台网络上计算机
-
127.0.0.1:本机localhost
-
ip地址的分类(IPV4 / IPV6)
-
域名:记忆IP问题
1.4 端口
端口表示计算机上的一个程序的进程
-
不同进程有不同端口号,用于区分软件
-
被规定 0 - 65535
-
(TCP) (UDP) 单个协议下,端口号不能冲突
-
端口分类
-
公用端口 0 - 1023
-
HTTP: 80
-
HTTPS: 443
-
FTP: 21
-
-
程序注册端口 1024 - 49151,分配给用户或者程序
-
Tomcat: 8080
-
MySQL: 3306
-
Oracle: 1521
-
-
动态、私有端口 49152 - 65535
netstat -ano #查看所有端口 netstat -ano|findstr "端口号" #查看指定端口 tasklist|findstr "PID" #查看指定端口进程 Ctrl + Shift + Esc 快速打开任务管理器
-
1.5 通信协议
TCP/IP协议组:实际上一组协议
TCP:打电话
-
连接,稳定
-
三次握手 四次挥手
A:你瞅啥 B:瞅你咋地 A:干一场 A:我要走了 B:你真的要走了吗 B:你真的真的要走了吗 A:我真的要走了
UDP:发短信
-
不连接,不稳定
1.6 TCP
客户端
-
连接服务器Socket
-
发送消息
//1.连接服务器
//获取服务端IP和端口号
InetAddress serverIP = InetAddress.getByName("localhost");
int port = 9999;
//创建一个Socket连接
socket = new Socket(serverIP, port);
//2.发送消息
os = socket.getOutputStream();
os.write("客服端向服务端发送消息".getBytes());
服务端
-
建立服务的端口
-
等待用户的连接
-
接受用户的消息
//1.创建服务的端口
serverSocket = new ServerSocket(9999);
while (true) {
//2.等待用户的连接
socket = serverSocket.accept();
//3.接受用户的消息
is = socket.getInputStream();
byte[] buffer = new byte[1024];
int len;
baos = new ByteArrayOutputStream();
while ((len = is.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
System.out.println(baos);
}
Tomcat
服务端
-
自定义 S
-
Tomcat服务器 S :Java后台开发
客户端
-
自定义 C
-
浏览器 B
1.7 UDP
发送端
public class SendDemo01 {
public static void main(String[] args) throws IOException {
//1.创建数据包Socket
DatagramSocket socket = new DatagramSocket(9998);
//2.创建数据报包
String massage = "数据报包";
DatagramPacket packet = new DatagramPacket(massage.getBytes(), 0,
massage.getBytes().length, InetAddress.getByName("127.0.0.1"), 9999);
//3.发送数据报包
socket.send(packet);
//4.关闭资源
socket.close();
}
}
接收端
public class ReceiveDemo01 {
public static void main(String[] args) throws IOException {
//1.创建服务的端口
DatagramSocket socket = new DatagramSocket(9999);
//2.接收数据报包
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);
socket.receive(packet);
//3.输出数据报包
System.out.println(packet.getAddress().getHostAddress());
System.out.println(new String(packet.getData(), 0, packet.getLength()));
//4.关闭资源
socket.close();
}
}
1.8 URL
统一资源定位符:定位资源(本地,互联网)
DNS域名解析
协议://ip地址:端口/项目名/资源
出处:https://www.cnblogs.com/yanglf-blog/p/15800560.html
最新更新
带有参数的装饰器
类装饰器
django中的auth模块与admin后台管理
python的日期处理
字符串常用方法
基本数据类型概述
python-map()函数基本用法
python带你实现任意下载AcFun视频数据~
bbs项目之注册功能
变量的定义和使用
三大常用数据库事务详解之三:事务运行
三大常用关系型数据库事务详解之二:基
三大关系型数据库事务详解之一:基本概
MongoDB常用命令(2)
MongoDB基本介绍与安装(1)
SQLServer触发器调用JavaWeb接口
SQL Server索引的原理深入解析
SqlServer2016模糊匹配的三种方式及效率问题
SQL中Truncate的用法
sqlserver 多表关联时在where语句中慎用tri
VB.NET中如何快速访问注册表
ASP.NET中图象处理过程详解
Vue(1)Vue安装与使用
JavaScript 语言入门
js将一段字符串的首字母转成大写
纯原生html编写的h5视频播放器
H5仿原生app短信验证码vue2.0组件附源码地
TypeScript(4)接口
TypeScript(3)基础类型
TypeScript(2)WebStorm自动编译TypeScript配置