第八十七讲 综合运用(2)


昨天我们我们了定义了一个网络库,但是只是给出了一些相关的信息,还没有真正的实现的,好吧,今天我们来说一下这个的类的实现,不过在

现在我们可以来实现的我们的相关class了,我们从简单的开始:
=======================================

//=====我们先从PER_IO_DATA着手吧=======

//构造函数,初始化相关对象

PER_IO_DATA::PER_IO_DATA(){

ReSet();

_socket = INVALID_SOCKET;

_op = ONIDEL_POSTED;

}


//析构函数,清楚断开socket

PER_IO_DATA::~PER_IO_DATA(){

if (_socket != INVALID_SOCKET){

closesocket(_socket);

_socket = INVALID_SOCKET;

}

}

//重置buffer,不过这个函数没用到,因为下面的ReSet更好一些


void PER_IO_DATA::ResetBuf(){

ZeroMemory(_buf, MAX_BUF);

}

//重置所有相关对象,除socket外


void PER_IO_DATA::ReSet(){

ZeroMemory(&

_ol, sizeof(WSAOVERLAPPED));

ZeroMemory(_buf, MAX_BUF);

_wsabuf.buf = _buf;

_wsabuf.len = MAX_BUF;

_op = ONIDEL_POSTED;

}

//其实这个也没用到,只是在完成例程中用到

MyNet* PER_IO_DATA::GetMyNet(){


return _pthis;

}

===================================

//现在我们再来看看PER_HANDLE_DATA的实现


PER_HANDLE_DATA::PER_HANDLE_DATA(){

_socket = INVALID_SOCKET;

memset(&

_addr, 0, sizeof(SOCKADDR_IN));

_Name = "

"

;

//保存连接客户的姓名

_Count = 0;

}


PER_HANDLE_DATA::~PER_HANDLE_DATA(){

if (_socket != INVALID_SOCKET){

closesocket(_socket);

_socket = INVALID_SOCKET;

}

}


//设置套接字


void PER_HANDLE_DATA::SetSocket(SOCKET _Sock){

_socket = _Sock;

}

//获取套接字

SOCKET&

PER_HANDLE_DATA::GetSocket(){


return _socket;

}


//设置客户地址


void PER_HANDLE_DATA::SetAddr(SOCKADDR_IN&

addr){

memcpy(&

_addr, &

addr, sizeof(SOCKADDR_IN));

}


//获取地址

SOCKADDR_IN&

PER_HANDLE_DATA::GetAddr(){


return _addr;

}



void PER_HANDLE_DATA::SetName(std::string name){

_Name = name;

}


//获取用户姓名

std::string&

PER_HANDLE_DATA::GetName(){


return _Name;

}


//原子操作将操作数+1


void PER_HANDLE_DATA::AddCount(){

InterlockedIncrement(&

_Count);

}


//原子操作将操作数-1


void PER_HANDLE_DATA::DecCount(){

InterlockedDecrement(&

_Count);

}


//获取目前的操作数

const unsigned long PER_HANDLE_DATA::GetCount() const{


return _Count;

}


//==================这章节就先说这里,余下的内容下面的章节再说

================================================

这两个class,开始的时候我直接打算就用PER_IO_DATA来操作的,但是后来发觉容易搞混,于是就重新封装一下,所以相信大家理解起来不会困难,好吧,下一讲我们开始来说说MyNet的实现。


================================

回复D&

d查看目录,回复相应的数字查看章节内容


原文始发于微信公众号(

C/C++的编程教室

):第八十七讲 综合运用(2)

|

发表评论