用C++封装Socket库

本文讲述了作者在不满意传统Socket编程模式后,尝试使用C++异常机制封装Winsock函数库,以提高代码优雅性和减少错误处理的冗余。目前实现了包含NetException、NetEnviroment和Socket三个类的简单库,旨在为网络通信提供更简洁的接口。作者通过实例展示了如何使用封装后的Socket类库实现TCP客户端,并计划在未来逐步完善并开源。
摘要由CSDN通过智能技术生成
这两天又看了几眼Socket编程,我老是没长性,总是东看看西看看。还老爱挑毛病,钻牛角尖,真是不可救药了。这不,又开始看Socket不顺眼了。当时是看了一个朋友给我的一段socket raw编程的代码,有一段看的我很恶心。如下:

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程序?也许吧,我说了我就 是一个死脑筋,总喜欢看起来好一些东西。总觉得那种每一个函数调用后,就跟着一堆针对返回值得
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值