网络编程

一、网络编程

  • 端口:实现多个电脑软件交互(app之间);
  • URL:区分软件的资源;
  • Ip:通过ip地址定位电脑(公网->内网);
  • 协议:交流的方式(例如:普通话);
    例如:传输层的TCP/UDP协议
TCP协议 UDP协议
面向连接 非面向连接
不高效 高效
可靠 不可靠

二、InetAddress类
java.net.InetAddress—>表示Internet协议(IP)地址

  • InetAddress类的静态方法
  1. getLocalHost返回本机
  2. getByName根据域名DNS/IP地址—>解析IP地址
  • 成员方法(对象调用)
  1. getHostAddress返回地址
  2. 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地址。

  • 构造器:
    new InetSocketAddress("地址|域名",端口)
    例如:
    `InetSocketAddress socketAddress=new InetSocketAddress("127.0.0.1",8080);`
    `InetSocketAddress socketAddress2=new InetSocketAddress("localhost",9000);`
  • 方法:
  1. getAddress:返回地址
  2. getPort():返回端口号
  3. 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,由四部分组成:

  1. 协议:getProtocol()
  2. 存放资源的主机域名:getHost()
  3. 端口号(http默认80):getPort()
  4. 请求资源: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

}
}

代码结果如下:

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
,