从KNSocket开始(未完)

    这是一个适宜于windows与linux双环境编译的包。当然其中有些地方需要编译前手工调换。下面以linux环境为主进行解析。

    预备的一些格式。这里为了适用于不同环境编译。大量使用了类似以下结构的预编译形式:

  

    很显然,能在跨平台编译的原因就在这里。

 

    接下来就是我们需要解析并理解的实例代码。

 

首先:

      全局参数表

shpp.h

 

这里的亮点在于头文件由编译系统环境的不同而选择不同。

 

KNSocket.h

 

这里我们可以看到KNSocket的整个结构

  1. enum KN_ERROR为错误返回枚举类型。
  2. class CSockAddr为socket地址操作类。
    1. CSockAddr()默认空地址指针初始化。
    2. CSockAddr(sockaddr_in &sin)直接赋予sockaddr_in值初始化。
    3. CSockAddr(const long ulAddr, const UInt16 ushPort = 0)赋予字符与数字参数入参转变初始化。
    4. char* DottedDecimal()正如函数名将网间传输所用addr转化为可打印输出的常见网址格式字符串。
    5. UInt16 Port() const将网间传输的端口转化为主机字节形式。
    6. UInt32 IPAddr() const将网间传输的ip地址值转化为主机字节
    7.  CSockAddr& operator=(const sockaddr_in& sin)
       LPCSOCKADDR GetLpSockaddr()
       operator LPCSOCKADDR() 这三个都是为了高效的将sockaddr_in转化为sockaddr而准备的。
  3. class CKNSocket当然为结构主体了
    1. #ifdef _WIN32
       static int InitSocket();
       static int ExitSocket();
      #endif                           当windows环境下时的socket初始化和退出函数。
    2. CKNSocket();初始化令m_hSocket为0。
    3. void Cleanup();关闭m_hSocket指示socket链接(如果存在)并将其値重置为0.没有返回值。
    4. int Create(int nType = SOCK_STREAM);在m_hSocket建立通讯用末端点。
    5. int Close();关闭m_hSocket指示socket链接(如果存在)并将其値重置为0.正常关闭或者已经关闭返回值为0。
    6. int Bind(LPCSOCKADDR psa);给m_hSocket绑定psa。
    7. int Listen(UInt32 nQlen = 5);监听端口。
    8. int Connect(LPCSOCKADDR psa);与psa所提供网间网址链接。
    9. int Accept(CKNSocket& s, LPCSOCKADDR psa);将psa联系到s->m_hSocket。
    10. int Send(const char* pch, const int nSize, const int nSecs);将pch中的字符串按nSize大小在nSecs微妙内发送到发送缓冲中。
    11. int Write(const char* pch, const int nSize, const int nSecs);将pch内总大小为nSize的内容在nSecs秒内拷贝到发送缓冲中。
    12. int Receive(char* pch, const int nSize, const int nUSecs);
    13. int SendDatagram(const char* pch, const int nSize, LPCSOCKADDR psa, const int nSecs = 10 );
    14. int ReceiveDatagram(char* pch, const int nSize, LPCSOCKADDR psa, const int nSecs = 10);
    15. int GetPeerAddr(LPCSOCKADDR psa);
    16. int GetSockAddr(LPCSOCKADDR psa);
    17. int GetSockAddr(char *chIPAddr);
    18. operator SOCKET()

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值