重构,从底层包装一个组socket阻塞TCP

开始写网络方面的程序,和我说的一样我要写成封装封装再封装。现在还没用到继承,等继续封状非阻塞模式的时候就要从这个类继承了。从原始的API 写的,没用到MFC所以可以在SDK或者WTL程序中直接用了。

类的方法如下:

首先是初始化

就是WSAStartup我将他写成静态函数是有意义的

调用如下

 if( CBTSocket::Init() != RET_SUCCESS )
 {
        printf("WSAStartup 错误");
        return 0;
 }

就阻塞的TCP来讲SOCKET可以有3种

第一种是服务器端监听的

可以用如下方法声成

 CBTSocket sListen;
 sListen.Create();//CREATE有重载
 sListen.Bind(9527);//9527为端口号
 sListen.Listen();
 
 printf("服务器已在监听状态/n");

 CBTSocket sAc;
 
aaa:

if(sListen.Accept(sAc) != RET_SUCCESS//此处也可以调用sAc.AcceptInit(sListen);

第二种是服务器接受连接的SOCKET

如上,2种方法建立

第三种是客户端的

可以由如下方法建立

CBTSocket s;
 s.Create();
 if(s.Connect("127.0.0.1", 9527) != RET_SUCCESS)
  return 0;

还有其他一些方法自己看代码

至于所有成员函数的返回如下

#define RET_SUCCESS  0x00000000 // 成功
#define RET_BADPARAM 0x00000001 // 参数错误 //此参数通常忽略不会发生
#define RET_WSAERROR 0x00000002 // SOCKET错误 此时候需要调用GETERRNUM来得到错误
#define RET_ERRSOCKET 0x00000003 //SOCKET没有初始化

如果是RET_WSAERROR的话可以调用

GetErrNum()//对应WSAGetLastError
GetErrDes(char *szErrDes)

得到错误号

程序很多地方考虑到了释放,希望大家喜欢,作为我重构积累计划第一个放出的代码,可能还有很多潜在错误
希望大家发现后可以把改过的发给我一份谢谢。

程序下载地址www.lwkl.net/CBTSocket.rar

/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值