3.试用C语言编写一对在以太网中发送和接收数据帧的应用,建议采用Socket 的TCP协议端口,必须提供软件设计方案和流程图,软件代码的每一行都必须加注中文注释说明设计意图,不得抄袭。(必做题)
解答: 编程使用TCP/IP协议,采用数据流的socket套接口,TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯。对比一下,UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送,UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出丢包现象。
程序采用服务器/客户机模式,下面是服务器的程序设计方案
【1】首先利用socket系统调用获得一个套接口
【2】系统调用bind将这个套接口绑定到主机的某个端口上
【3】端口开始侦听有无连接请求,系统调用listen
【4】没有就继续侦听,有的话执行下一步
【5】接受connect的请求,系统调用accept(),得到一个新的套接口描述符,这个时候通信管道已经完全建立好了
【6】利用这个新的描述符完成发送数据帧的操作,系统调用send()
【7】发送完毕要撤销套接口
下面是完整程序和详细注释
清单01 server.c
#include
#include
#include
#include
#include
#include
#include
#include/头文件