编写一个socket服务器端和客户端通信的程序_【北京尚学堂·百战程序员】第017天...

388c52b56c2f64e28260a665f35a0d5f.png

【训练大纲017】

上午学习目标:

1 掌握TCP和UDP

2 掌握InetAddress和InetSocketAddress类的使用

1. TCP和UDP协议的区别

(1) 数据的传输模式有哪两种?

答:TCP和UDP两种传输模式。

(2) TCP和UDP协议的区别是什么?

答:TCP是面向连接的,传输数据安全,稳定,效率相对较低。而UDP是一种无连接的传输层协议,提供面向事物的简单不可靠信息传送服务。基于TCP协议的Socket编程通信双方需要建立连接,连接建立时双方存在主次之分,而基于UDP协议的Socket编程通信双方不需要建立连接,通信双方完全平等。

2. TCP协议数据传递细节

(1) TCP通信原理是什么?

答:服务器端创建ServerSocket,在指定端口监听并处理请求,客户端创建Socket,向服务器发送请求。

(2) 简述TCP通信的步骤?

答:1、主机通过IP地址和端口向服务器发送请求:outputStream。

2、服务器通过accept方法接收到主机的请求(inputstream)。

3、服务器响应主机的请求,向主机发送数据(outputstream)。

3. UDP协议数据传递细节

(1) 简述UDP协议的特点?

答:1、非面向连接

2、不安全

3、存在丢包

4、性能较高

(2) 请你举例生活中的哪些应用使用到了UDP?

答:生活中寄快递,寄信,发短信等都使用了UDP协议。

4. InetAddress类_InetSocketAddress类

(1) InetAddress类的作用及常用方法是什么?

答:两个静态方法

1、getLocalHost:返回本机地址

2、getByName:根据域名DNS对应的去解析IP地址

两个成员方法

1、getHostAdress:获取主机IP地址

2、getHostName:获取计算机名

(2) InetSocketAddress类的作用及常用方法是什么?

答:1、作用:包含IP和端口信息,常用于Socket通信。此类实现 IP 套接字地址(IP 地址 + 端口号),不依赖任何协议。

2、方法getAddress(),getPort(),getHostName()

下午学习目标:

1 掌握URL类的使用

2 掌握TCP的Socket双向通信

3 掌握使用TCP协议的Socket编写聊天室

4 掌握使用UDP实现客户咨询

1. URL类_爬虫原理

(1) URL指的是什么?作用是什么?

答:URL指的是一个统一资源定位符,由四部分组成:协议、存放资源的主机域名、端口号、和资源文件名。

(2) URL的常用方法有哪些?

答:1、getProtocal():获取URL的协议名称。

2、getHost():获取此URL的主机名(如果适用)。

3、getPort():获取URL的端口号。

4、getFile():获取此URL的文件名。

5、getDefaultPort():获取与此URL关联协议的默认端口号。

6、getPath():获取此URL的路径部分。

2. 基于TCP协议的Socket编程_双向通信_实现单次请求与响应

(1) 请你画出Soket编程实现一次双向通信的传输示意图?

答:如图

71d4de2fe0d6d886635c19e0647999a2.png

(2) 实现一次单次请求与响应,客户端与服务器的操作步骤是什么?

答:服务器端的操作步骤:

1、创建ServerSocket对象

2、监听是否有客户端来请求连接

3、获取输入流

4、获取输出流

5、关闭流,关闭Socket

客户端的操作步骤:

1、创建Socket对象

2、获取输出流

3、获取输入流

4、关闭流

3. 基于TCP协议的Socket编程_双向通信_实现模拟用户登录

(1) 请你画出双向通信用户登录的示意图?

答:如图

b32dd86956c76cdba3ecf3f62586209a.png

(2) 简述用户登录的过程客户端与服务器的功能?

答:客户端输入账号和密码,将账号和密码封装成对象,将用户对象发送到服务器端,服务器端接收到用户对象,对输入的账号和密码进行验证,将验证的结果发回客户端作为响应,客户端接收结果,是否登陆成功。

4. 基于TCP协议的Socket编程_聊天室_客户端多线程

(1) 简述客户端与服务器端单次聊天的缺点?

答:单次聊天的缺点:只能客户端先发送数据,然后才能接收数据,如果不发就收不到(接收和发送是在同一个线程实现的),不符合实际情况。

(2) 单次聊天的缺点的解决方案是什么?

答:1、多次聊天可以使用循环来解决

2、先发后收的问题可以使用线程来解决,一个接收数据的线程,一个发送数据的线程。

5. 基于TCP协议的Socket编程_聊天室_群聊

(1) 简述实现群聊的原理?

答:一个客户端发送数据,通过服务器线程转发给其他客户端。

(2) 简述群聊实现的步骤?

答:1、编写客户端接收和发送的线程

3、服务器端编写一个“MyChannel”线程类,每个客户端都是一条路径

4、当一个客户端连接进来,即添加到集合中

5、遍历集合转发数据给其他客户端。

6. UDP通信_DatagramSocket实现_客户咨询

(1) 简述UDP通信的原理?

答:当服务器要向客户端发送数据时,需要在服务器端产生一个DatagramSocket对象,在客户端产生一个DatagramSocket对象。服务器端的DatagramSocket将DatagramPacket发送到网络上,然后被客户端的DatagramSocket接收。

(2) UDP编程的步骤?

答:1. 创建客户端的DatagramSocket,创建时,定义客户端的监听端口。

2. 创建服务器端的DatagramSocket,创建时,定义服务器端的监听端口。

3. 在服务器端定义DatagramPacket对象,封装待发送的数据包。

4. 客户端将数据报包发送出去。

5. 服务器端接收数据报包。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值