设为首页 加入收藏

TOP

A.1.1 网络编程是什么
2013-10-07 16:03:33 来源: 作者: 【 】 浏览:75
Tags:A.1.1 网络编程 什么

A.1.1 网络编程(www.cppentry.com)是什么

网络编程(www.cppentry.com)是什么?是熟练使用Sockets API 吗?说实话,在实际项目里我只用过

两次Sockets API,其他时候都是使用封装好的网络库。

第一次是2005 年在学校做一个羽毛球赛场计分系统:我用C# 编写运行在PC上的软件,负责比分的显示;再用C# 写了运行在PDA 上的计分界面,记分员拿着PDA 记录比分;这两部分程序通过TCP 协议相互通信。这其实是个简单的分布式系统,体育馆有几片场地,每个场地都有一名拿PDA 的记分员,每个场地都有两台显示比分的PC (显示器是42 寸平板电视,放在场地的对角,这样两边看台的观众都能看到比分)。这两台PC 的功能不完全一样,一台只负责显示当前比分,另一台还要负责与PDA 通信,并更新数据库里的比分信息。此外,还有一台PC 负责周期性地从数据库读出全部7 片场地的比分,显示在体育馆墙上的大屏幕上。这台PC 上还运行着一个程序,负责生成比分数据的静态页面,通过FTP 上传发布到某门户网站的体育频道。系统中还有一个录入赛程(参赛队、运动员、出场顺序等)数据库的程序,运行在数据库服务器上。算下来整个系统有十来个程序,运行在二十多台设备(PC 和PDA)上,还要考虑可靠性,避免single point of failure。

这是我第一次写实际项目中的网络程序,当时写下来的感觉是像写命令行与用户交互的程序:程序在命令行输出一句提示语,等待客户输入一句话,然后处理客户输入,再输出下一句提示语,如此循环。只不过这里的"客户"不是人,而是另一个程序。在建立好TCP 连接之后,双方的程序都是read/write 循环(为求简单,我用的是blocking 读写),直到有一方断开连接。

第二次是2010 年编写mudu网络库,我再次拿起了Sockets API,写了一个基于Reactor 模式的C++(www.cppentry.com) 网络库。写这个库的目的之一就是想让日常的网络编程(www.cppentry.com)从Sockets API 的琐碎细节中解脱出来,让程序员专注于业务逻辑,把时间用在刀刃上。mudu网络库的示例代码包含了几十个网络程序,这些示例程序都没有直接使用Sockets API。

在此之外,无论是实习还是工作,虽然我写的程序都会通过TCP 协议与其他程序打交道,但我没有直接使用过Sockets API。对于TCP 网络编程(www.cppentry.com),我认为核心是处理"三个半事件",见§6.4.1 "TCP 网络编程(www.cppentry.com)本质论"。程序员的主要工作是在事件处理函数中实现业务逻辑,而不是和Sockets API"较劲"。

这里还是没有说清楚"网络编程(www.cppentry.com)"是什么,请继续阅读后文§A.1.5"网络编程(www.cppentry.com)的各种任务角色"。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇A.1 网络编程的一些"胡思乱.. 下一篇A.1.2 学习网络编程有用吗

评论

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

·MySQL 安装及连接-腾 (2025-12-25 06:20:28)
·MySQL的下载、安装、 (2025-12-25 06:20:26)
·MySQL 中文网:探索 (2025-12-25 06:20:23)
·Shell脚本:Linux Sh (2025-12-25 05:50:11)
·VMware虚拟机安装Lin (2025-12-25 05:50:08)