前言
我们学习 java 基础的时候,基本上所有的功能只能在单机上使用。可是随着网络的发展,单机应用已经无法满足我们的需求了。就好比你打游戏时,网络游戏往往比单机游戏吃香。那我们就通过这个专题打开java网络编程的大门。
1. 概述:
网络编程的目的: 我们可以通过网络编程实现生活中简单的聊天室,无线电台,通信等功能。
想要达到这个效果需要什么?
[1] 如何准确的定位网络上的一台主机(需要相应的端口号和计算机上的某个资源)
[2] 找到这个主机,如何传输数据呢?
javaWeb: 网页编程 B/S
网络编程: TCP/IP
InetAddress就是java中封装了IP地址的类
package gs.lesson01;
import java.net.InetAddress;
import java.net.UnknownHostException;
// 测试 IP
public class TestInetAddress {
public static void main(String[] args) throws UnknownHostException {
//查询本机地址
InetAddress inetAddress01 = InetAddress.getByName("127.0.0.1");
System.out.println(inetAddress01);
InetAddress inetAddress03 = InetAddress.getByName("localhost");
System.out.println(inetAddress03);
InetAddress inetAddress04 = InetAddress.getLocalHost();
System.out.println(inetAddress04);
//查询网站ip地址
InetAddress inetAddress02 = InetAddress.getByName("www.baidu.com");
System.out.println(inetAddress02);
//常用方法
System.out.println(inetAddress02.getCanonicalHostName()); //规范的名字
System.out.println(inetAddress02.getHostAddress()); // ip
System.out.println(inetAddress02.getCanonicalHostName()); // 域名或自己电脑的名称
}
}
2. 网络通信的要素
如何实现网络通信?
[1] 通信双方地址: IP + 端口号
如:192.168.16.124:5900
[2] 规则: 网络通信协议
这个协议就好比我们所说的语言,当我们与外国人进行交流时,我们就必须使用英语,否则他们听不懂。
TCP/IP参考模型
在java基础的学习时,我们关注的主要是应用层上面的问题,而我们现在所学的网络编程主要关注的是传输层上的问题,我们需要理解我们是如何通过。
InetSocketAddress就是我们存放IP地址和端口的地方
package gs.lesson01;
import java.net.InetSocketAddress;
public class TestInetSocketAddress {
public static void main(String[] args) {
InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1", 8080);
InetSocketAddress socketAddress1 = new InetSocketAddress("localhost", 8080);
System.out.println(socketAddress);
System.out.println(socketAddress1);
System.out.println(socketAddress.getAddress());
//在window操作系统下可以找到C:/Windows/System32/drivers/etc这里面的hosts对其隐射进行修改
System.out.println(socketAddress.getHostName()); //地址
System.out.println(socketAddress.getPort()); //端口
}
}
小结:
- 网络编程中有两个主要的问题
- 如何准确的定位到网络上一台或者多台主机
- 找到主机之后如何进行通信
- 网络编程中的要素
- IP和端口号 (IP相关的类)
- 网络通信协议 (UDP和TCP相关的类)
- 万物皆对象