第一章 网络编程入门
1.1 软件结构
- C/S结构:客户端和服务器结构,常见的有:QQ、迅雷等软件
- B/S结构:浏览器和服务器结构,常见的有:谷歌、火狐等
1.2网络通信协议
- 网络通信协议
- TCP/IP协议:传输控制协议/因特网互联协议。四层模型(应用层、传输层<TCP、UDP>、网络层、数据链路层和物理层)
1.3协议分类:
- UDP:用户数据报协议。面向无连接的通信协议,当一台计算机向另一台计算机发送数据时,发送端不会确认接收端是否存在,就会发送数据,同样接收端在收到数据时,也不会向发送端反馈是否接收到数据。
- *优点**:消耗资源小,通信效率高,通常用于音频、视频和普通数据的传输。
- *缺点**:不能保证数据的完整性,偶尔会丢失少量数据包。
<UDP相对于TCP而言,是缺少一个可靠的丢失重发机制,因此可以立即返回,所以你觉得快> - TCP:传输控制协议。面向连接的通信协议,传输数据前,先建立逻辑连接,再传输数据,提供了两台计算机间可靠的无差错的数据传输。
在TCP连接中必须要明确客户端与服务器,由客户端发送连接请求,每次连接的创建都要经过“三次握手”。保证数据传输安全。 - 三次握手
1、第一次握手:客户端向服务器发送连接请求,等待服务器确认。
2、第二次握手:服务器向客户端回送一个响应。通知客户端收到了连接请求。
3、第三次握手:客户端再次向服务器发送确认信息,确认连接。
1.4网络编程三要素
①协议
②IP地址
- ipv4 32位的二进制数,通常被分为四个字节,可以表示2^32≈42亿个
- ipv6 128位的十六进制数,每16个字节一组,分成8组,可以表示16^128个
特殊的IP地址:127.0.0.1、localhost <代表的都是本地的IP地址>
③端口号
- 是一个逻辑端口,无法直接看到。由两个字节组成,取值范围在0-65535之间
- *注意**:
1、1024之前的端口号已经不能使用了,被系统分配到已知的网络软件了
2、端口号不能重复 - 使用IP+端口号就能保证数据准确无误地发送到对方计算机的指定软件上了
常见的端口号:
1、80端口 网络端口 如:www.baidu.com:80
2、数据库 mysql:3306 oracle:1521
3、Tomcat服务器:8080
第二章:TCP通信程序
2.1概述
两端通信步骤:
1、服务端程序,需要事先启动,等待客户端的连接
2、客户端主动连接服务器端,连接成功才能实现通信。服务端不可以主动连接客户端。
在Java中,提供了两个类来实现TCP通信程序
1、客户端:java.net.Socket
类表示,创建Socket对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信。
2、服务端:java.net.ServerSocket
类表示。创建 ServerSocket 对象,相当于开启一个服务,并等待客户端 的连接。
2.2 Socket类
Socket 类:该类实现客户端套接字,套接字指的是两台设备之间通讯的端点。 构造方法:public Socket(String host, int port) :
创建套接字对象并将其连接到指定主机上的指定端口号。如果指 定的host是null ,则相当于指定地址为回送地址。
例如:
1 | Socket client = new Socket("127.0.0.1", 6666); |
成员方法包括:getInputStream、getOutputStream、close、shutdownOutput.
具体实现:
客户端类:
1 | package com.silencoco._NET; |
服务器类:
1 | package com.silencoco._NET; |