JAVAEE初阶 网络编程(二)

发布时间:2024年01月21日

在构造一个简单的服务器之前,我们需要了解到一些传输层提供给应用层的一些API。

在这里插入图片描述在这里插入图片描述在这里插入图片描述

一. 服务器端

1.1 服务器端的代码分析。

在服务器端,第一步我们要创建DatagramSocket对象。
socket对象是在内存中的,针对这个内存对象操作就会改变网卡。
一个主机上的端口号是整数,并且只能被一个进程所绑定,但是一个进程可以绑定多个端口i

在这里插入图片描述

在这里插入图片描述

如果在网络中通常表示,socket对象创建失败,因为它的端口号可能会被占据。

在这里插入图片描述

通过这个字节数组保存收到消息的正文,也就是UDP数据报的载荷部分,并不一定要设置4096,可以灵活设置。

在这里插入图片描述

这的receive方法需要一个输出型参数,那么我们就需要创建一个DatagramPacket对象,receive就会从网卡中读取到一个UDP数据报,存储在requestPacket当中,其中的载荷部分被放到字节数组中,报头部分也会被requestPacket的其他属性所保存。
但是执行到receive的时候,如果还没有客户端发来请求怎么办呢?
receive就内置了一个阻塞等待功能。

在这里插入图片描述

String里的第一个参数,getData表示当前的字节数组。
第二个参数表示的是该字节数组的有效长度,而非实际总长度。

在这里插入图片描述

socket对象的send方法也需要一个输出型参数,所以我们要创建一个对象。

在这里插入图片描述

第一个参数是把String中的字节数组拿了过来
第二个参数是字节数组的有效长度,
第三个参数是将服务器的端口号和IP地址以及包含了客户端的IP地址和端口号。是把请求中的IP和端口号转化为了目的IP和目的端口,便于返回客户端。

在这里插入图片描述

此处参数中的端口号并不一定是9090,而是 1024 <X<65535中的任何数。

1.2 服务器端的代码

在这里插入图片描述

二. 客户端

2.1 客户端的代码分析

在这里插入图片描述

客户端不需要手动指定端口,因为系统会自动分配一个空闲的端口号。
服务器是程序员手动指定端口,是可控的。

在这里插入图片描述

2.2 执行顺序

在这里插入图片描述在这里插入图片描述

2.3 客户端的代码

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

文章来源:https://blog.csdn.net/m0_73111651/article/details/135731446
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。