asp.core api 通过socket和服务器通信发送udp_关于网络编程Socket学习

网络编程

对应作业

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通信的步骤?

v2-d43eb55dcf930ad2591771e8f089969a_b.jpg

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编程实现一次双向通信的传输示意图?

v2-754acf03aff98e56c598e1f288a07a7b_b.jpg

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

客户端:

建立连接à打开 Socket 关联的输入输出流à数据流中读写信息à关闭所有的数据流和 Socket

服务器端:

建立连接,处理发送到指定端口的数据à监听并获取客户端对象à数据流中读写信息à关闭所有的数据流和 Socket

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

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

v2-b33c3da85c322888958dc7f4c591df78_b.jpg

(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. 服务器端接收数据报包。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值