一、网络的集中工作模式:
1.专用服务器结构(Server-Based)
又称为“工作站/文件服务器”结构,由若干太微机工作站与一台或多态文件服务器通过通信线路连接起来组成工作站存取服务器文件,共享存储设备。
2.客户机/服务器模式(client/server)
其中一台或几台较大的计算机集中进行共享数据库的管理和存取,称为服务器,而将其它的应用处理工作分散到网络中其他微机上去做,构成分布式的处理系统。
3.对等式网络(Peer-to-Peer)
在对等式网络结构中,没有专用服务器,每一个工作站既可以既可以起客户机作用也可以起服务器作用。
二、网络通信协议:
计算机网络中实现通信必须有一些约定即通信协议,对速率、传输代码、代码结构、传
输控制步骤、出错控制等指定标准。
网络通信结构:
为了使两个结点之间能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间能进行信息交换。接口包括两部分:
硬件装置:实现结点之间的信息传送(网卡)
软件装置:规定双方进行通信的约定协议
OSI的七层模型
三、IP地址的分配:32位,由4个8位的二进制数组成,圆点隔开
IP地址被分为A、B、C、D、E五类,A类用八位表示网络地址。
四、端口
五、InetAdress类方法:
六、URL类方法
七、URLEncoder、URLDecoder相关方法
八、HttpURLConnection相关方法
九、套接字Socket(装的端口号和IP地址)(readLine()、accept()方法会阻塞)
TCP/IP里面服务端和客户端拥有不同的Socket,因为Socket装的是端口号和IP地址,所以服务端和客户端拥有不同额Socket装自己的端口号和IP地址
十、传输层协议(TCP/IP、 UDP)--------交通工具
TCP/IP(打电话,只有通了才能开始交流ServerSocket、Socket,有服务器和客户端概念)
IP:Internet Protocol 网络协议,支撑主机之间通信的基本协议,如果需要实现主机之间消息安全传输,通常会结合TCP协议共同使用,全称为TCP/IP 都属于传输层协议
TCP:传输控制协议,能保证数据消息在主机之间安全传输,三次握手,四次挥手是一个安全传输数据协议,所以一般用于对数据传输的准确性,安全性较高的应用,但是效率较低,比如:视屏通话
服务器(ServerSocket)/客户端(Socket):要求通信双方之间必须存在一个服务器
使用:client->1、new Socket(“服务器地址”,服务器端口);
2、获取输入流socket.getInpustStream()
Server->1、new ServerSocket(服务器端口);
2、接受客户端Socket,socket = server.accept();
3、获取输出流socket.getOutputStream
TCP/IP实现群发原理:client1发送1份给交换机,交换机发送1份给服务器,服务器发送n份给交换机,交换机发送n份给n个客户端
UDP数据广播实现群发原理:client1发送1份给交换机,交换机发送1份给服务器,服务器发送1份给交换机,交换机发送n份给n个客户端
UDP -》(需要 群聊组播地址(D类地址) 实现群发)IP一共有ABCDE类地址
MulticastSocket.joinGroup(groupId);
UDP(快递,收不收得到不管,发出去就行DatagramSocket、DatagramPacket,只有数据的接收方和发送方,创建socket时发送方可以不用定义端口,直接发给端口,接收方创建socket时要定义端口)
UDP:User Datagram Protocol 用户数据报协议,无法保证数据的安全性,但是可以提高数据传输的效率
//飞秋识别消息的基本格式 端口号2425
static final String BASE_FORMAT = "1:100:狗蛋:徘徊在牛A和牛C之间的人:32:";
使用:Send->1、创建网络通道new DatagramSocket();
2、创建数据报包New DatagramPacket(
msg.getBytes(),
0,
msg.getBytes().length,
InetAddress.getByName(“接收方IP地址”),
接收方端口);
3、socket.send(packet);
Receiver->1、new DatagramSocket (发送方端口);
2、创建空的数据报包准备接收读取到的数据packet = new Packet(b, 1024)【如果b数组不够大,可能造成数据接受不全】
Socket.receiver(packet),
接受到的数据str = new String(packet.getData(),
packet.getOffset(),
packet.getLength());
发送广播:MulticastSocket(飞秋)
- 创建多播网络通道socket = new MulticastSocket();
- 将通道加入多播地址socket.joinGroup(InetAddress.getByName("226.81.9.8"));
将需要发送的数据打包成数据报包New DatagramPacket(
msg.getBytes(),
0,
msg.getBytes().length,
InetAddress.getByName(“226.81.9.8”),//飞秋组播地址
2425);//飞秋端口
- socket.send(packet);
十一、应用层协议(HTTP、FTP、Echo)------交通工具中运送的货物类型
服务器:
客户端:
局域网聊天室
HomeWork:
一 服务端提供一个公开的目录,里面包含可以被下载的文件(全部是标准文件)
* 如何实现客户端任意下载指定文件
二 完成一个局域网聊天室
1.能够群聊(1对多发消息)
2.能够实现真正的私聊
3.保存聊天记录
4.将所有ip地址与昵称对应,在显示消息时,同时显示发送人(昵称)
map.put("192.168.46.254","mrchai")
技术参数:
IO流:消息发送与接收,聊天记录保存
多线程:多多个Socket同时提供通信服务
Socket编程
十二、NIO,非阻塞通信(应用于推送服务)
NIO是jdk1.4之后引入的一套全新的IO API,处理数据的方式不同于传统IO,传统IO处理数据的方式以字节单位;而NIO是以一个Buffer(数据块)为单位,传统IO属于阻塞式(流在读取数据时如果未读取到时,程序会处于阻塞状态);而NIO处理的方式为非阻塞式方式运行(底层原理为信号的处理),NIO可以在单线程的应用中处理多个客户端请求