目录
- 什么是计算机网络
- 网络通信的两个要素
- IP地址
- 端口Port
- 通信协议
- TCP实现聊天
- TCP文件上传实现
- 初始Toncat
- UDP消息发送
- UDP聊天实现
- UDP多线程在线咨询
- URL下载网络资源
1.网络编程
1.1 概述
信件:
TCP -> 连接 -> 建立连接成功 -> 打电话
UDP -> 发送了就完事儿 -> 接收 -> 发短信
想要达到通信需要什么:
- 如何准确的定位网络的一台主机 -> ip地址:端口 定位到这个计算机上的某个资源
- 找到了这个主机,如何传输数据? -> 协议
1.2 网络通信的要素
通信双方地址(给机器定位)
ip:端口号 -> 192.168.16.124:5900 -> 某计算机上的某个具体的应用
协议(定位后如何进行通信)
万物皆对象:在Java中,ip地址是一个对象,啥都是一个对象
1.3 IP
ip地址:InetAddress
-
唯一定位网络上的计算机
-
127.0.0.1 本机localhost
-
ip地址的分类
-
ipv4/ipv6
-
公网(互联网)/私网(局域网)
- ABCD类地址
- 192.168.xx.xx 局域网
-
域名:记忆ip问题
相关代码
InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");
System.out.println(inetAddress1);
InetAddress inetAddress3 = InetAddress.getByName("localhost");
System.out.println(inetAddress3);
InetAddress inetAddress4 = InetAddress.getLocalHost();
System.out.println(inetAddress4);
InetAddress inetAddress2 = InetAddress.getByName("www.baidu.com");
System.out.println(inetAddress2);
System.out.println(inetAddress2.getCanonicalHostName()); //规范的名字
System.out.println(inetAddress2); //ip
System.out.println(inetAddress2); //域名,或自己电脑的名字
1.4 端口
端口表示计算机上的一个程序的进程。
相关代码
InetSocketAddress socketAddress1 = new InetSocketAddress("127.0.0.1",8080);
InetSocketAddress socketAddress2 = new InetSocketAddress("localhost",8080);
System.out.println(socketAddress1.getAddress());
System.out.println(socketAddress1.getHostName());
System.out.println(socketAddress1.getPort());
1.5 通信协议
TCP/IP协议簇:实际上是一组协议
- TCP:用户传输协议
- UDP:用户数据报协议
- IP:网络互联协议
TCP:
- 打电话
- 连接稳定
- 三次握手、四次挥手
A:你瞅啥 //发送请求,自身进入等待状态
B:瞅你咋地 //收到请求,往回发,自身处于等待状态
A:干一架 //发送确认信息,自身确定建立连接,B收到后也建立连接
A:我要走了 //发送请求,A进入终止等待
B:你要走了吗? //B收到后,发送信息1给A,B进入关闭等待,再发送信息2给A,B进入最终确认
B:你真的要走了吗? //A收到信息1进入终止等待2,收到信息2后,进入时间等待并发送最后信息,2MSL后关闭连接
A:我真的要走了 //B收到最后信息,关闭连接
UDP:
- 不连,不稳
- 客户端还是服务端无明确界限
- 准没准备好都可以发
|