C++中怎么封装Socket库

发布时间:2021-07-27 11:45 来源:亿速云 阅读:0 作者:Leah 栏目: 编程语言 欢迎投稿:712375056

C++中怎么封装Socket库,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

代码如下:

 if((ErrorCode=WSAStartup(MAKEWORD(2,1),&wsaData))!=0){           printf("WSAStartup failed: %d\n",ErrorCode);           return 2;       }       sockMain=WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,NULL,0,WSA_FLAG_OVERLAPPED);       if(sockMain==INVALID_SOCKET)       {           printf("Socket failed: %d\n",WSAGetLastError());           return 3;       }       ErrorCode=setsockopt(sockMain,IPPROTO_IP,IP_HDRINCL,(char *)&flag,sizeof(int));       if(ErrorCode==SOCKET_ERROR)       {           printf("Set sockopt failed: %d\n",WSAGetLastError());           return 4;       }       ErrorCode=setsockopt(sockMain,SOL_SOCKET,SO_SNDTIMEO,(char*)&TimeOut,sizeof(TimeOut));       if(ErrorCode==SOCKET_ERROR)       {           printf("Set sockopt time out failed: %d\n",WSAGetLastError());           return 5;       }

也许很多人都觉得我神经,这个不是每个socket程序的必经之路么?要是觉得这个很难受破坏结构,那还怎么写大型的socket程序?也许吧,我说了我就是一个死脑筋,总喜欢看起来好一些东西。总觉得那种每一个函数调用后,就跟着一堆针对返回值得错误处理语句很罗嗦,为什么不用异常来使这些更优雅呢?代码上的优雅同时也就意味着代码的出错几率的降低。

再加上我对于孟岩他们所探讨的C++异常机制的怀疑还是无法深入理解。所以我打算尝试一下充分使用异常机制来完成类似上述代码得错误处理,用C++封装Winsock函数库,以后基于这个自己写的Socket C++类库,写一些通讯程序,从而暴露一些异常机制的弊病,让自己充分的理解异常机制的一些害处。现在我的理解还是太肤浅了,不够深入。

我现在的感觉是网络通讯中出现的异常简直太正常了,因为你无法预计将会发生什么,哪里会出错误,因此用异常机制去处理时非常合适的。而且我注意到很多地方的错误返回,又不少是错误发生后,确实没什么办法可以恢复的。所以,应该也不违背一些规则。试试看吧。

其实我本来是想找一个STL类似的类库,结果没找到。找到一个ACE结果把我给吓回去了,好大啊。没必要把。我只需要一个简单的用C++特性进行封装的Socket类库而已。如果有人听说了的话,请告诉我,省得我在这里白费力气。哦,不过也不白费力气,自己实现一些东西,挺好的。

免责声明:本站发布的内容(图片、视频和文字)以原创、来自本网站内容采集于网络互联网转载等其它媒体和分享为主,内容观点不代表本网站立场,如侵犯了原作者的版权,请告知一经查实,将立刻删除涉嫌侵权内容,联系我们QQ:712375056,同时欢迎投稿传递力量。