bool
XmlRpcServer::bindAndListen(int port, int backlog /**//*= 5*/)
...{
int fd = XmlRpcSocket::socket();
if (fd < 0)
...{
XmlRpcUtil::error("XmlRpcServer::bindAndListen: Could not create socket (%s).", XmlRpcSocket::getErrorMsg().c_str());
return false;
}
this->setfd(fd);
// Don't block on reads/writes
if ( ! XmlRpcSocket::setNonBlocking(fd))
...{
this->close();
XmlRpcUtil::error("XmlRpcServer::bindAndListen: Could not set socket to non-blocking input mode (%s).", XmlRpcSocket::getErrorMsg().c_str());
return false;
}
// Allow this port to be re-bound immediately so server re-starts are not delayed
if ( ! XmlRpcSocket::setReuseAddr(fd))
...{
this->close();
XmlRpcUtil::error("XmlRpcServer::bindAndListen: Could not set SO_REUSEADDR socket option (%s).", XmlRpcSocket::getErrorMsg().c_str());
return false;
}
// Bind to the specified port on the default interface
if ( ! XmlRpcSocket::bind(fd, port))
...{
this->close();
XmlRpcUtil::error("XmlRpcServer::bindAndListen: Could not bind to specified port (%s).", XmlRpcSocket::getErrorMsg().c_str());
return false;
}
// Set in listening mode
if ( ! XmlRpcSocket::listen(fd, backlog))
...{
this->close();
XmlRpcUtil::error("XmlRpcServer::bindAndListen: Could not set socket in listening mode (%s).", XmlRpcSocket::getErrorMsg().c_str());
return false;
}
XmlRpcUtil::log(2, "XmlRpcServer::bindAndListen: server listening on port %d fd %d", port, fd);
// Notify the dispatcher to listen on this source when we are in work()
_disp.addSource(this, XmlRpcDispatch::ReadableEvent);
return true;
}
这是XML RPC++ 里面的一段实现端口绑定与监听的代码。
两种完全不同的感觉:
1、非常完美,考虑非常完善,每一步都考虑了执行结果是否正确,根据每一步的执行结果来决定下一步的操作;
2、非常丑陋。真正执行的功能代码淹没在众多异常处理代码中;
分享到:
相关推荐
这时候你需要做的就是采用 Extract Method(110)提炼出重复的代码,然后让这两个地点都调用被提炼出来的那一段代码。 Long Method(过长函数) 拥有「短函数」(short methods)的对象会活得比较好、比较长。不...
在提供的文档中,我们可以看到一段用于圣诞节祝福的QQ空间留言代码。这段代码由多个部分组成,每个部分都是一个单独的富文本格式指令,用于展示不同颜色和形状的星星、装饰以及文字。下面是对这些代码的详细解释: ...
在"幸运七"的实现中,这个方法可能被用来不断更新页面上的数字或者元素状态,模拟数字7的滚动或者变换,给人一种随机性和动态性的感觉。这可能涉及到以下知识点: 1. **DOM操作**:JavaScript可以通过Document ...
综合以上信息,这个压缩包提供了一个完整的Flash电子相册解决方案,包括源代码和成品,对于想要学习或使用Flash制作网页相册的人来说极具价值。用户可以从中学到如何利用ActionScript(Flash的编程语言)进行动画...
而假如你真的因为我的书而重新燃起实践的热情,从而开始一段操作系统旅程,我将会感到非常高兴。 不过我得坦白,在写作《自己动手写操作系统》的时候,我并不敢期待它能引起多少反响,一方面因为操作系统并不是时尚...
而假如你真的因为我的书而重新燃起实践的热情,从而开始一段操作系统旅程,我将会感到非常高兴。 不过我得坦白,在写作《自己动手写操作系统》的时候,我并不敢期待它能引起多少反响,一方面因为操作系统并不是时尚...
动态扫描是通过快速切换不同数码管的供电,使人在视觉上感觉所有数码管都在同时显示,从而节省硬件资源。静态显示则是每个数码管都有独立的控制线,始终维持所需显示的状态,这种方法显示效果更好,但需要更多的GPIO...
文档中的“算法文档无代码浅析”可能意味着该文档并非是一段实际的代码,而是对算法理论和算法思想的阐述。这可以为不熟悉代码的人提供算法概念的深入理解,同时也帮助初学者建立起算法应用的直觉和感觉。 5. 百度...
件,一段时间下来,发现不过如此,挺简单好用,但是你真正理解 J2EE 了吗?你在具体案例中的应用是否也是在延伸 J2EE 的思 想? 如果你不能很好的延伸 J2EE 的思想,那你岂非是大炮轰蚊子,认识到 J2EE 不是适合...
描述中提到的“绘图功能”可能包括了温度分布图、舒适度曲线等,这些图表能够帮助用户分析不同条件下的舒适度变化,比如调整空调设置后对舒适度的影响,或者是不同季节、不同时间段的舒适度比较。 至于“压缩包子...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Rivest在1991年设计。它将任意长度的输入(也称为预映射)转换为固定长度的输出,通常是128位的二进制数,通常用32个十六进制数字表示。...
例如,可以使用`time.sleep()`函数配合`for`循环来逐行显示诗词,给人一种动态滚动的感觉。 4. **滚动字幕输出编程三种之境界** 滚动字幕输出通常需要自定义函数来实现,通过不断更新屏幕内容和位置,模拟出文字从...
图片文件可能有正面和反面两种状态,用于显示未翻转和翻转后的卡牌。CSS文件将定义卡牌的样式和动画,而JavaScript文件将实现抽奖逻辑和音乐播放功能。 总的来说,这个卡牌抽奖特效展示了JavaScript、CSS3和...
在IT行业中,CSS3是一种强大的样式表语言,用于描述HTML或XML(包括SVG、MathML等)文档的呈现。在本案例中,"人物遥控无人机CSS3动画特效代码"是一个利用CSS3的关键帧(@keyframes)规则创建的互动场景,它展示了戴...
数码管有七段或八段,每段可以独立控制亮灭,通过不同组合可以显示出0-9的数字和一些字母。静态显示是将所有段选和位选线直接连接到单片机的I/O口,每个数码管显示时都需要占用多个I/O口。而动态显示则通过快速切换...
七段LED显示器是常用的LED数码显示器之一,使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一...
在本压缩包中,提供的Octave和1/3倍频程分析程序代码可以帮助我们理解并实现这两种分析技术。 首先,我们要了解什么是“倍频程”。在音乐和声学中,一个频率是另一个频率的两倍时,它们之间就形成了一个倍频程关系...
通过这种方式,两个内层元素不断旋转,形成一个交叉旋转的效果,给人一种持续加载的感觉。这种纯CSS加载动画的优点在于它既简单又轻量,对性能的影响较小,同时提供了良好的视觉反馈。 为了自定义这个加载动画,你...
Swing支持两种主要的外观和感觉:金属(Metal)和系统(System)。金属主题是Swing的默认主题,具有简洁的蓝色风格;而系统主题则会跟随操作系统自身的GUI样式,例如Windows或Mac OS。除此之外,Swing还允许通过LookAnd...
数码管通常分为共阴极和共阳极两种类型,每个数码管由7个或8个段组成(7段加一个小数点)。实现数码管显示的代码需要处理段驱动和位驱动,根据要显示的字符或数字,设置相应的段电平。在实际操作中,我们可能会使用...