今天喝酒了

今天喝酒了

喝得有点小醉,还好能分清楚东南西北,不然都回不来了!!!

喝了晚上睡不着,真是很不爽,干脆起来把那个程序给写完!

于是我把那类QQ项目中的那个存放在线用户的SOCKET类给写完了,还没有调试

具体的调试还等初始化SOCKET后再来调试了

本结构采用来链表动态填加和删除SOCKET

由于头比较晕 ,代码写得很不完善,写这个BLOG的时候忘记了错误处理了,申请空间失败的情况也没有处理

现在本人还是晕晕状态!难受!!下次在也不喝酒了!!

class SocketOnlineNode

{

public:

       friend COnlineSocketChian;//设置为友员

private:

       SocketOnlineNode* m_Next;//指向下一个节点

       long m_bID;//ID 号码

       SOCKET m_ClientSocket;//保留对方的socket

};

class COnlineSocketChian

{

public:

       COnlineSocketChian();

    ~ COnlineSocketChian();

       BOOL    AddSocket(long,SOCKET);//用户登陆时保存其SOCKET

       SOCKET  FindSocket(long);//更具ID查找其SOCKET

       BOOL    DeleteSocket(long);//用户下线删去其SOCKET

private:

       SocketOnlineNode* m_FirstNode;//指向第一个节点的指针

};

//=============构造函数==================================

//创建一个头指针和头结点

COnlineSocketChian::COnlineSocketChian()

{

       m_FirstNode=new SocketOnlineNode;

       m_FirstNode->m_Next=NULL;

}

/======在最后一个元素后面追加新上线的客户IDSOCKET====================

BOOL COnlineSocketChian::AddSocket(long bID,SOCKET ClientSocket)

{

       SocketOnlineNode* CurrentNode=m_FirstNode;

       while(CurrentNode)

              CurrentNode=CurrentNode->m_Next;

       SocketOnlineNode* AddNode=new SocketOnlineNode;//创建要插入的节点

       AddNode->m_Next=NULL;

       AddNode->m_bID=bID;

       AddNode->m_ClientSocket=ClientSocket;

       m_FirstNode->m_Next=AddNode;

}

 

//===============查找SOCKET======================

SOCKET COnlineSocketChian::FindSocket(long ID)

{

       SocketOnlineNode* CurrentNode=m_FirstNode;

       while(CurrentNode)

       {

              if(ID==CurrentNode->m_bID)

                     return CurrentNode->m_ClientSocket;

        CurrentNode=CurrentNode->m_Next;

       }

       return 0;

}

 

///=========删除下线用户的SOCKET=====================

BOOL COnlineSocketChian::DeleteSocket(long ID)

{

  SocketOnlineNode* CurrentNode=m_FirstNode;

  while(CurrentNode)

  {

         if(ID==CurrentNode->m_bID)//删除操作

         {

              SocketOnlineNode* DeletNode;

              DeletNode=CurrentNode;

              CurrentNode=CurrentNode->m_Next;

              delete DeletNode;

          return TRUE; 

         }

         CurrentNode=CurrentNode->m_Next;

  }

  return FALSE;

}

 

//============析构函数===================================

~ COnlineSocketChian()

{

       SocketOnlineNode* CurrentNode=m_FirstNode;

    while(CurrentNode)

       {

     CurrentNode=m_FirstNode->m_Next;

        delete m_FirstNode;

        m_FirstNode=CurrentNode;

       }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值