JAVAEE初阶 网络编程(二)

回显服务器

    • 一. 服务器端
      • 1.1 服务器端的代码分析。
      • 1.2 服务器端的代码
    • 二. 客户端
      • 2.1 客户端的代码分析
      • 2.2 执行顺序
      • 2.3 客户端的代码

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

JAVAEE初阶 网络编程(二)_第1张图片JAVAEE初阶 网络编程(二)_第2张图片JAVAEE初阶 网络编程(二)_第3张图片

一. 服务器端

1.1 服务器端的代码分析。

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

JAVAEE初阶 网络编程(二)_第4张图片

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

此处参数中的端口号并不一定是9090,而是 1024

1.2 服务器端的代码

JAVAEE初阶 网络编程(二)_第5张图片

二. 客户端

2.1 客户端的代码分析

在这里插入图片描述

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

JAVAEE初阶 网络编程(二)_第6张图片

2.2 执行顺序

JAVAEE初阶 网络编程(二)_第7张图片JAVAEE初阶 网络编程(二)_第8张图片

2.3 客户端的代码

JAVAEE初阶 网络编程(二)_第9张图片
JAVAEE初阶 网络编程(二)_第10张图片JAVAEE初阶 网络编程(二)_第11张图片

你可能感兴趣的:(java-ee,网络,java)