MST

星途 面试题库

面试题:网络编程之Socket自定义协议基础

在Socket编程中自定义协议,假设我们需要设计一个简单的文件传输协议。请描述协议头部至少应包含哪些字段用于标识文件信息(如文件名、文件大小等),并简要说明如何在发送端构建协议数据包以及在接收端解析该数据包。
20.6万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

协议头部字段

  1. 文件名长度:用于表示文件名的字节数,通常用一个固定长度(如2字节)的无符号整数表示,方便接收端准确知道文件名的长度从而正确解析。
  2. 文件名:实际的文件名,长度由前面的文件名长度字段确定。
  3. 文件大小:文件的字节大小,一般用4字节或8字节的无符号整数表示,告知接收端文件总共的大小,以便判断接收是否完整。

发送端构建协议数据包

  1. 确定文件名长度,并将其转换为特定字节数(如2字节)的二进制表示。
  2. 将文件名转换为字节数组。
  3. 将文件大小转换为特定字节数(如4字节或8字节)的二进制表示。
  4. 按顺序拼接文件名长度、文件名、文件大小,形成协议头部。
  5. 将文件内容作为协议数据包的主体部分,拼接在协议头部之后,组成完整的协议数据包发送。

接收端解析数据包

  1. 接收数据包后,先读取固定长度(如2字节)的数据,解析出文件名长度。
  2. 根据文件名长度,读取相应字节数的数据,解析出文件名。
  3. 再读取固定长度(如4字节或8字节)的数据,解析出文件大小。
  4. 开始接收文件内容,根据解析出的文件大小,判断文件接收是否完整。