关于网友提出的“ 网络程序接口”问题疑问,本网通过在网上对“ 网络程序接口”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 网络程序接口
描述:本帖最后由 oyljerry 于 2013-07-01 15:53:21 编辑
对于网络通信有TCP UDP IO操作有同步 和 异步,如和将这定义为同一的接口函数
如:
SetServiceListen(int iIOType/*0 同步 1异步*/,int iNetWorkType/*0 TCP 1 UDP*/ ,int nPort,pComputerGUID &pID);
我遇到的问题是:
同步好说直接返回就行,对于异步,返回值并不能代表方法执行成功,解决的方法是添加一个回掉函数,但是(1)同步函数并不需要这个,这样需要将一个接口分成两个接口了
(2)其实调用者并不关心这个回掉函数,一般情况下,他觉得只要调用了就行,至于具体的解决,那是你网络接口的问题!(问过其它人的一些看法)
(3)等待异步执行完成在返回,那这和同步又有啥区别?
哪位大侠写过这样的通用的通信组件,或者用过也行,他们的接口是怎么封装的?
解决方案1:
你这个和同步没什么区别吧,在同一个线程里失败了去调用他的回调函数,和你直接返回错误结果是一样的.应该是他调用你的函数,你只保存参数,另起任务去处理,然后函数就返回了.另外一个任务去调用回调.如果用户自己没有重试次数,一旦错误就反复调用的话,这就是他的逻辑问题,不是你的问题了.或者你提供一个尝试次数,自己去尝试,说明让用户不要在回调中判断失败后就简单的再次调用.
解决方案2: 封装两组API,内部实现的时候重用大部分
XXXSync
XXXASync
解决方案3:
你告诉他 返回值失败 网络有问题 或者发送了部分在回调里通知你了 你自己在发剩下的 你嫌麻烦就用同步的别用异步的...
以上介绍了“ 网络程序接口”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2953508.html