设为首页 加入收藏

TOP

2.1.2 小试牛刀--模拟实现Windows的TCP程序(1)
2013-10-07 15:53:59 来源: 作者: 【 】 浏览:76
Tags:2.1.2 小试牛刀 模拟 实现 Windows TCP 程序

2.1.2  小试牛刀--模拟实现Windows的TCP程序(1)

实例功能 使用Visual C++(www.cppentry.com)开发一个类似于Windows自带的TCP程序

源码路径 光盘\yuanma\2\TCP

本实例的目的是,使用Visual C++(www.cppentry.com) 6.0开发一个类似于Windows自带的TCP程序。

1. 划分模块

项目中TCP模块的功能描述如下。

(1) 服务器端能够以默认选项启动提供服务功能,默认选项包括服务器端的IP或主机名和端口号。

(2) 服务器端能够根据用户指定的选项,提供服务功能,这些选项包括服务器端的IP或主机名和端口号。

(3) 如果服务器以错误选项启动,则提示错误信息,并终止程序。

(4) 客户端连接到服务器端后,可以发送信息到服务器,也可以接收来自服务器端的响应。

(5) 如果客户端不能连接到服务器端,则输出错误信息。

(6) 当客户端以错误选项启动时,会提示错误信息,并终止程序。

根据上述功能分析,得出TCP模块的构成功能如下所示。

服务器端

初始化模块:初始化全局变量,并为全局变量赋值,初始化Winsock,并加载Winsock库。

功能控制模块:是其他模块的调用函数,实现参数获取、用户帮助和错误处理等。

循环控制模块:用于控制服务器端的服务次数,如果超过指定次数则停止服务。

服务模块:为客户提供服务,接收客户端的数据,并发送数据到客户端。

客户端

初始化模块:用于初始化客户端的Winsock,并加载Winsock库。

功能控制模块:是其他模块的调用函数,实现参数获取、用户帮助和错误处理等。

传输控制模块:用于控制整个客户端的数据传输,包括发送和接收。

总体结构如图2-5所示。

 
图2-5  TCP模块的总体结构

2. 运行流程分析

(1) 服务器端运行流程。

在服务器端,首先调用GetArgments()函数获取用户提供的选项,如果没有提供选项,则直接使用默认值,如果有选项提供并成功获取,则初始化变量和Winsock,并创建TCP流套接字,然后解析主机名或IP地址,解析成功后设置服务器地址的各个参数,包括地址族和IP地址等。接下来将创建的TCP流套接字和设定的服务器地址绑定。绑定成功后开始侦听客户端的连接,并调用循环函数LoopControl()函数和Service()函数进行接收客户端的连接、接收数据和发送数据等操作。当服务次数达到最多服务次数时,则关闭服务器,并释放所占用的资源。

(2) 客户端运行流程。

客户端执行时必须带选项,首先判断用户提供参数的个数,如果参数不是3个,则说明没有提供正确的选项,退出当前程序。如果等于3个,则调用GetArgments()函数获取用户提供的选项,如果获取的选项错误则终止程序,正确则创建TCP流套接字,接着进行和服务器端类似的操作,即解析主机和IP地址,然后进行连接服务器的操作,连接成功则输出连接信息,并发送信息到客户端,然后接收来自服务器端的响应,并将接收到的信息输出。最后关闭套接字并释放所占用的资源。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.1.1 TCP协议基础(3) 下一篇2.1.2 小试牛刀--模拟实现Windows..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++中智能指针的性能 (2025-12-25 03:49:29)
·如何用智能指针实现c (2025-12-25 03:49:27)
·如何在 C 语言中管理 (2025-12-25 03:20:14)
·C语言和内存管理有什 (2025-12-25 03:20:11)
·为什么C语言从不被淘 (2025-12-25 03:20:08)