网络编程
1.1 概述
计算机网络:
计算机网络是指将地理位置不同的具有独立功能的多态计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
1.2 IP
ip地址:InetAddress类
-
IP的所用:唯一定位一台网络上计算机
-
127.0.0.1:本机localhost,即便断网,也是可以ping的。
-
ip地址的分类:
-
ipv4/ipv6
- ipv4就是127.0.0.1这种,由四个字节组成,每个字节是0~255,总共由42亿个,并且分配非常不均匀(30亿在北美,亚洲只有4亿个),2011年就用尽了。
- ipv6:128位,用8段无符号整数表示,相比ipv4扩展了ip数,据说可以让地球上的每一粒沙子都有ip。
-
公网(互联网)、私网(局域网)
-
-
代码如下:
package com.ip.lesson1; import java.net.InetAddress; import java.net.UnknownHostException; //测试ip public class TestInetAddress { public static void main(String args[]){ try{ //查询本机地址 InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1"); System.out.println(inetAddress1); InetAddress inetAddress2 = InetAddress.getByName("localhost"); System.out.println(inetAddress2); InetAddress inetAddress3 = InetAddress.getLocalHost(); System.out.println(inetAddress3); //查询网站地址 InetAddress inetAddress0 = InetAddress.getByName("www.baidu.com"); System.out.println(inetAddress0); }catch (UnknownHostException e){ e.printStackTrace(); } } }
当联网时,输出结果为:
不联网时,输出结果为:
联网和不联网时在命令提示符上输入ipconfig,结果如下:
就localhost,127.0.0.1 和本机IP三者的区别来看,联网时,getLocalHost()输出的是本地ip;而断网时,访问loopback网络接口。
1.3 端口
端口表示计算机上一个程序的进程。
-
不同的进程有不同的端口号,用来区分不同的软件。
-
端口被规定数字为0~65535。
-
电脑上有TCP和UDP两种协议,故端口总数为65536*2。两个协议中相同的端口号不冲突。但是在同一个协议下,端口号不冲突。
-
端口分类:
-
共有端口:0~1023,这些端口尽量不要去使用,一般归一些内置的进程去使用,或者服务器的使用。
- HTTP:80端口
- HTTPS:443端口(在后面加:443)
- FTP:21端口
- Telent:23端口
-
程序注册端口:1024~49151,用来分配用户或者程序。
- Tomcat:8080端口
- MySQL:3306端口
- Oracle:1521端口
-
动态端口、私有端口:49152~65535(也不建议用来分配用户)
netstat -ano#查看所有端口 netstat -ano|findstr "5900"#查看指定的端口 tasklist|findstr "8696"#查看指定端口的进程 Ctrl + shift + ESC #打开任务管理器
-
package com.ip.lesson1;
import java.net.InetSocketAddress;
public class TestInetSocketAddress {
public static void main(String args[]){
InetSocketAddress inetSocketAddress = new InetSocketAddress("127.0.0.1",8080);
InetSocketAddress inetSocketAddress2 = new InetSocketAddress("localhost",8080);
System.out.println(inetSocketAddress);
System.out.println(inetSocketAddress2);
System.out.println(inetSocketAddress.getAddress());
System.out.println(inetSocketAddress.getHostName());//地址
System.out.println(inetSocketAddress.getPort());//端口
}
}
//输出结果:
// /127.0.0.1:8080
// localhost/127.0.0.1:8080
// /127.0.0.1
// 127.0.0.1
// 8080