问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么用C++封装Socket库

发布网友 发布时间:2024-04-28 08:16

我来回答

1个回答

热心网友 时间:2024-05-06 02:46

代码如下: 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类库而已。如果有人听说了的话,请告诉我,省得我在这里白费力气。哦,不过也不白费力气,自己实现一些东西,挺好的。我自己没读过STL代码,因此无法写出STL或者Boost风格的代码来,只能按照自我的想象,反复的调整代码了。不过通过封装一个类库,不断地debug,不断地完善,我对C++的理解一定会进一步的。也许那个时候我会说“哦?这是谁写的垃圾代码啊,简直不堪入目,愚蠢至极。wait,好像是我写的”然后就是羞愧至极。呵呵。目前我实现了一个最简单的socket类库,准确说还不能叫做实现了一个类库,只能叫做用C++封装了几个socket函数而已,暂时只能叫做概念试验,但是我希望将来有一天这个能成长为一个比较简单、实用的C++ Socket类库。目前其中有3个类。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
焦作有哪些旅行景点值得一去? 河南穿古装去的地方 AE入门从学会套模板开始,AE模板套用简易教程,看起来复杂的AE其实也很... ae怎么套用模板ae模版的使用方法 北京通州区有什么好玩的地方吗 请问现在有哪些看电影的网站?越多越好~~ 帮初中女儿请假一天讲身体不适,班主任却跟别的老师讲她得了大病,该如何... 梦见家中被盗空只剩一件绿色衣的预兆 梦见美丽沙穗 美版4s内置卡贴有什么危害? 怎么养泰迪啊?我很喜欢泰迪 日本地震福建有震感吗 日本地震,北京为何有震感? 日本地震中国的有震感吗? 请问可以提供一些下英文电影,而且只带有英文字幕不含中文字幕的电影的网... 未满足一年可以强制改吗? ...不要用老眼光看待别人看不起别人 求关于这种角度的作文 800字_百度... ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... 揭秘手机屏幕保护新玩法! 您的手机号在最近24小时内绑定过三个,已达到限制,...24小时后... ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 关于微信绑定上限的问题:你的手机号在最近24小时内已绑定过3个... 未满一年可以强制改吗 您的手机号在最近24小时内绑定过三个,已达到限制,...24小时后... 诺曼底号遇难记中生字有哪些? ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 手机号1 24 手机号24小时内绑定了两个被限制 请问什么时候才能重 ... 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 手机号1 24 手机号24小时内绑定了两个被限制 请问什么时候才能重 ... 想招财房间里放什么摆件好 惠州有什么宝藏居酒屋推荐? 手机号1 24 手机号24小时内绑定了两个被限制 请问什么时候才能重 ... 6月30日日本5.5级地震,绍兴嵊州会不会有震感?我在10.25分左右感到地... 11号日本地震,广东有震感吗?有感觉吗! 今天日本地震的时候,你们有震感吗? 跪求韩国各女团中老小(忙内)的出生年月日 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 我修的可能是假仙免费听书如何下载 工程制图习题集第4版 A、B两球的质量均为m,两球之间用轻弹簧相连,放在光滑的水平地面上,A球... 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 一个手机号在注册了一个微信后又注册了新的,旧的怎么找回? 如果重新注册一个之前的还可以找得回来吗? 用同一个手机号重新注册了一个,之前的微信怎么登录? 新乡市农业科技园区属于哪个区 联想3000 G530 笔记本 想更换 CPU 显卡 能换什么详细型号的? 在哪里换... 新乡的休闲采摘好去处有哪些?