十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
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类库而已。如果有人听说了的话,请告诉我,省得我在这里白费力气。哦,不过也不白费力气,自己实现一些东西,挺好的。
关于C++中怎么封装Socket库问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。