网络编程基础概念
网络编程即使用套接字来达到进程间通信,现在一般称为TCP/IP编程。
计算机网络三高问题: 高并发,高性能,高可用
(Local Area Network;LAN) 通常我们常见的“LAN”就是指局域网,这是我们最常见、应用最广的一种网络
参考模型
IP协议
1、每个人的电脑都有一个独一无二的IP地址,这样互相通信时就不会传错信息了。
2、IP地址是用一个点来分成四段的,在计算机内部IP地址是用四个字节来表示的,一个字节代表一段,
每一个字节代表的数最大只能到达255。
InetAddress类(表示互联网协议IP地址)
无构造方法
常用方法摘要
byte[] getAddress()
返回此 InetAddress 对象的原始 IP 地址。
static InetAddress getByName(String host)
在给定主机名的情况下确定主机的 IP 地址。
String getHostAddress()
返回 IP 地址字符串(以文本表现形式)。
String getHostName()
获取此 IP 地址的主机名。
static InetAddress getLocalHost()
返回本地主机。
获取本地ip
InetAddress inet4 = InetAddress.getLocalHost();
System.out.println("local\t" + inet4); //local 张建琳/192.168.5.8
//获取此 IP地址的 主机名
System.out.println(inet4.getHostName()); //张建琳
//返回本地主机 IP地址
System.out.println(inet4.getHostAddress()); //192.168.5.8
127.0.0.1:本机地址,主要用于测试。别名:Localhost
端口
IP地址用来标识一台计算机,但是一台计算机上可能提供多种网络应用程序,如何来区分这些不同的程序呢?这就要用到端口。
端口是虚拟的概念,并不是说在主机上真的有若干个端口。
通过端口,可以在一个主机上运行多个网络应用程序。端口的表示是一个16位的二进制整数,2个字节,对应十进制的0~65535。
MySQL(3306),Oracle(1521),Tomcat(8080)等等程序都有自己的端口
查看端口
- 用命令提示符cmd查看所有端口:netstat -ano
- 查看具体程序:使用任务管理器查看PID
InetSocketAddress(此类实现IP套接字地址:IP地址 + 端口号)
构造方法
InetSocketAddress(InetAddress addr, int port)
根据 IP 地址和端口号创建套接字地址。
InetSocketAddress(int port)
创建套接字地址,其中 IP 地址为通配符地址,端口号为指定值。
InetSocketAddress(String hostname, int port)
根据主机名和端口号创建套接字地址。
常用方法
InetAddress getAddress()
获取 InetAddress。
String getHostName()
获取 hostname。
int getPort()
获取端口号。
示例
在这里插入代码片
UDP发送端
1、建立UDP的socket对象
2、将要发送的数据封装成数据包
3、通过UDP的socket对象,将数据包发送出去
4、释放资源
UDP接收数据
1、创建接收端的UDPSocket对象
2、创建用于接收的数据报包
3、使用receive()方法,此方法在接收到数据之前一直阻塞(注:接收在receivePacket中 )
4、解析数据报包
V3模拟聊天的程序
抽取发送数据的方法sentData()
接收 接收端发送的数据
代码熟练度,通过一直写来熟悉
URL
网络三大基石:HTML,HTTP,URL