网络编程
对应作业
1. TCP和UDP协议的区别
(1) 数据的传输模式有哪两种?
(1) OSI 参考模式:开放系统互连参考模型(Open System Interconnect)
(2) TCP/IP 参考模型:传输控制/网际协议 Transfer Controln Protocol/Internet Protocol
(2) TCP和UDP协议的区别是什么?
TCP通信双方需要建立连接。连接建立时双方有主次之分。一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议
UDP通信双方不需要建立连接,通信双方完全平等。一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务
2. TCP协议数据传递细节
(1) TCP通信原理是什么?
服务器创建 ServerSocket,在指定端口监听并处理请求 客户端创建 Socket,向服务器发送请求
(2) 简述TCP通信的步骤?
1. UDP协议数据传递细节
(1) 简述UDP协议的特点?
1) 不需要利用IO流实现数据的传输
2) 每个数据发送单元被统一封装成数据包的方式,发送方将数据包发送到网络中,数据包在网络中去寻找他的目的地。
3) DatagramSocket:用于发送或接收数据包
4) DatagramPacket:数据包
(2) 请你举例生活中的哪些应用使用到了UDP?
发短信、发邮件、聊天
2. InetAddress类_InetSocketAddress类
(1) InetAddress类的作用及常用方法是什么?
封装计算机的 IP 地址,不包含端口号。
1. String getHostAddress()获得IP地址
2. String getHostName()获得主机名
3. static InetAddress getByName(String host)根据主机名获得IP地址
(2) InetSocketAddress类的作用及常用方法是什么?
此类用于实现 IP 套接字地址 (IP 地址+端口号),用于 socket 通信
1 InetAddress getAddress() 获取InetAddress对象
2 int getPort() 获取端口号
3 String getHostName() 获取主机名
1. URL类_爬虫原理
(1) URL指的是什么?作用是什么?
统一资源定位符,由 4 部分组成:协议 、存放资源的主机 域名、端口号和资源文件名。
作用:URL则标识了这些计算机上的资源,是指向互联网“资源”的指针。
(2) URL的常用方法有哪些?
1 String getProtocal() 获取此 URL 的协议名称
2 String getHost() 获取此 URL 的主机名(如果适用)
3 int getPort() 获取 URL 的端口号
4 String getFile() 获取此 URL 的文件名
5 getDefaultPort() 获取与此 URL 关联协议的默认端口号
6 getPath() 获取此 URL 的路径部分
2. 基于TCP协议的Socket编程_双向通信_实现单次请求与响应
(1) 请你画出Soket编程实现一次双向通信的传输示意图?
(2) 实现一次单次请求与响应,客户端与服务器的操作步骤是什么?
客户端:
建立连接à打开 Socket 关联的输入输出流à数据流中读写信息à关闭所有的数据流和 Socket
服务器端:
建立连接,处理发送到指定端口的数据à监听并获取客户端对象à数据流中读写信息à关闭所有的数据流和 Socket
3. 基于TCP协议的Socket编程_双向通信_实现模拟用户登录
(1) 请你画出双向通信用户登录的示意图?
(2) 简述用户登录的过程客户端与服务器的功能?
客户端:实现输入用户名和密码封装成一个对象。通过ObjectOutputStream实现序列化,发送到服务器上。并接收从服务器端发送过来的数据。使用数据输入流来读取数据。并显示。
服务器:使用ObjectInutStream将对象反序列化,分解出用户名和密码。通过equals()方法进行判断。判断结果通过数据输出流返回给客户端。
4. 基于TCP协议的Socket编程_聊天室_客户端多线程
(1) 简述客户端与服务器端单次聊天的缺点?
只能客户端先发送数据,然后才能接收数据,如果不发就 收不到,(接收和发送是在一个线程中实现的)不符合实际情况
(2) 单次聊天的缺点的解决方案是什么?
(1)多次聊天可以使用循环来解决
(2)先发后收的问题可以使用线程来解决,一个接收数据的线 程,一个发送数据的线程
5. 基于TCP协议的Socket编程_聊天室_群聊
(1) 简述实现群聊的原理?
每一个客户都是一个线程,(可单独提出客户的线程类)服务器将多个客户放在list集合中。只要有一个客户加入,就创建一个客户线程。在该线程中实现接收数据、发送数据和转发数据功能。(转发中遍历所有的用户集合,在里面判断是否是自己,如果不是自己则调用发送的方法)从而实现群聊。
(2) 简述群聊实现的步骤?
1、 客户端:
1. 创建发送send和接收receive两个线程,分别实现发送数据和接收数据功能。
2. 创建用户Client类。创建socket对象,指定地址和端口号。创建并启动发送和接收线程。解决先收后发问题。
2、 服务器端:
1. 创建服务器Server类,创建serversocket对象,指定端口号。在循环中监听。创建客户端的线程类并启动线程。使用list集合接收。
2. 每个客户都是一个线程,只要有一个客户加入,就创建一个客户线程。在该线程中实现接收数据、发送数据和转发数据功能。(转发中遍历所有的用户集合,在里面判断是否是自己,如果不是自己则调用发送的方法)
6. UDP通信_DatagramSocket实现_客户咨询
(1) 简述UDP通信的原理?
客户端和服务器端通过DatagramSocket定义自己的端口。各自通过DatagramPacket接收或者发送数据包,传递或者通过String的构造方法读出数据。让数据包发送到指定主机上的指定端口号上。
(2) UDP编程的步骤?
1. 创建客户端的DatagramSocket,创建时,定义客户端的监听端口。
2. 创建服务器端的DatagramSocket,创建时,定义服务器端的监听端口。
3. 在服务器端定义DatagramPacket对象,封装待发送的数据包。
4. 客户端将数据报包发送出去。
5. 服务器端接收数据报包。