一、网络编程
- 端口:实现多个电脑软件交互(app之间);
- URL:区分软件的资源;
- Ip:通过ip地址定位电脑(公网->内网);
- 协议:交流的方式(例如:普通话);
例如:传输层的TCP/UDP协议
TCP协议 |
UDP协议 |
面向连接 |
非面向连接 |
不高效 |
高效 |
可靠 |
不可靠 |
二、InetAddress类
java.net.InetAddress
—>表示Internet协议(IP)地址
getLocalHost
返回本机
getByName
根据域名DNS/IP地址—>解析IP地址
getHostAddress
返回地址
getHostName
返回计算机名
举例代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import java.net.InetAddress; import java.net.UnknownHostException; public class JiaNLi { public static void main(String[] args) throws UnknownHostException { //创建getLocalHost方法创建一个InetAddress对象 InetAddress addr=InetAddress.getLocalHost(); System.out.println(addr.getHostAddress());//返回:10.2.41.239 System.out.println(addr.getHostName());//DESKTOP-VMNQVVJ //根据域名可以得到netAddress对象 addr=InetAddress.getByName("www.baidu.com");//使用域名www.baidu.com System.out.println(addr.getHostAddress());//返回百度服务器的ip:39.156.66.18 System.out.println(addr.getHostName());//www.baidu.com } }
|
代码结果如下:
三、端口(区分软件)
公认端口 |
注册端口 |
动态/私有端口 |
0-1023 |
1024-49151 |
49152-65535 |
分配给专用的 |
用户进程/应用程序 |
一般设置这个范围 |
查看所有端口:netstat -ano
查看指定端口:netstat -aon|findstr “xxx”
查看指定进程:tasklist|findstr “xxx”
查看具体程序:使用任务管理器查看PID
四、InetSocketAddress类
java.net.InetSocketAddress
—>实现IP套接字地址(IP地址+端口号),可以是一对(主机号+端口号),在这种情况下主机号要DNS一下IP地址。
getAddress:
返回地址
getPort():
返回端口号
getHostString
:返回主机号/地址的String形式
1 2 3 4 5 6 7 8 9 10 11 12 13
| import java.net.InetAddress; import java.net.InetSocketAddress; public class JiaNLi { public static void main(String[] args) { //构造器:new InetSocketAddress("地址|域名",端口) InetSocketAddress socketAddress=new InetSocketAddress("127.0.0.1",8080); InetSocketAddress socketAddress2=new InetSocketAddress("localhost",9000); System.out.println(socketAddress.getHostName()); //返回主机名--127.0.0.1 System.out.println(socketAddress2.getAddress());//返回地址--localhost/127.0.0.1 System.out.println(socketAddress2.getPort());//获取端口号--9000 System.out.println(socketAddress2.getHostString());返回主机名/地址的String形式--localhost } }
|
代码结果如下:
五、URL(区分软件资源)
URI(统一资源标志符)分类:
URL |
URN |
统一资源定位符 |
统一资源名称 |
一种定位资源的主要访问机制的字符串 |
特定命名空间的唯一名称/ID来标识资源 |
举例:
在www上,每一信息资源都有统一且唯一的地址(URL)—>http://www.baidu.com:80/index.html?uname=shsxt&age=18#a
,由四部分组成:
- 协议:
getProtocol()
- 存放资源的主机域名:
getHost()
- 端口号(http默认80):
getPort()
- 请求资源:
getFile(显示参数)/getPath(不显示参数)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import java.net.MalformedURLException; import java.net.URL; public class JiaNLi { public static void main(String[] args)throws MalformedURLException { URL url=new URL("http://www.baidu.com:80/index.html?uname=shsxt&age=18#a"); //获取四个值 System.out.println("协议"+url.getProtocol());//协议http System.out.println("域名"+url.getHost());//域名www.baidu.com System.out.println("请求资源"+url.getFile());//请求资源/index.html?uname=shsxt&age=18 System.out.println("请求资源"+url.getPath());//请求资源/index.html System.out.println("端口"+url.getPort());//端口80 ``//参数 System.out.println("参数"+url.getQuery());//参数uname=shsxt&age=18 //锚点 System.out.println("锚点"+url.getRef());//锚点a
} }
|
代码结果如下: