⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 socket.h

📁 一个很好用的解析
💻 H
字号:
#ifndef SOCKET_H_INCLUDED#define SOCKET_H_INCLUDED#include <netinet/in.h>#include "xmlrpc-c/abyss.h"#include <netinet/in.h>#define IPB1(x) (((unsigned char *)(&x))[0])#define IPB2(x) (((unsigned char *)(&x))[1])#define IPB3(x) (((unsigned char *)(&x))[2])#define IPB4(x) (((unsigned char *)(&x))[3])typedef struct in_addr TIPAddr;typedef void SocketDestroyImpl(TSocket * const socketP);typedef void SocketWriteImpl(TSocket *             const socketP,                             const unsigned char * const buffer,                             uint32_t              const len,                             abyss_bool *          const failedP);typedef uint32_t SocketReadImpl(TSocket * const socketP,                                char *    const buffer,                                uint32_t  const len);typedef abyss_bool SocketConnectImpl(TSocket * const socketP,                                     TIPAddr * const addrP,                                     uint16_t  const portNumber);typedef abyss_bool SocketBindImpl(TSocket * const socketP,                                  TIPAddr * const addrP,                                  uint16_t  const portNumber);typedef abyss_bool SocketListenImpl(TSocket * const socketP,                                    uint32_t  const backlog);typedef void SocketAcceptImpl(TSocket *    const listenSocketP,                              abyss_bool * const connectedP,                              abyss_bool * const failedP,                              TSocket **   const acceptedSocketPP,                              TIPAddr *    const ipAddrP);typedef uint32_t SocketErrorImpl(TSocket * const socketP);typedef uint32_t SocketWaitImpl(TSocket *  const socketP,                                abyss_bool const rd,                                abyss_bool const wr,                                uint32_t   const timems);typedef uint32_t SocketAvailableReadBytesImpl(TSocket * const socketP);typedef void SocketGetPeerNameImpl(TSocket *    const socketP,                                   TIPAddr *    const ipAddrP,                                   uint16_t *   const portNumberP,                                   abyss_bool * const successP);struct TSocketVtbl {    SocketDestroyImpl            * destroy;    SocketWriteImpl              * write;    SocketReadImpl               * read;    SocketConnectImpl            * connect;    SocketBindImpl               * bind;    SocketListenImpl             * listen;    SocketAcceptImpl             * accept;    SocketErrorImpl              * error;    SocketWaitImpl               * wait;    SocketAvailableReadBytesImpl * availableReadBytes;    SocketGetPeerNameImpl        * getPeerName;};struct _TSocket {    uint               signature;        /* With both background and foreground use of sockets, and           background being both fork and pthread, it is very easy to           screw up socket lifetime and try to destroy twice.  We use           this signature to help catch such bugs.        */    void *             implP;    struct TSocketVtbl vtbl;};#define TIME_INFINITE   0xffffffffextern abyss_bool SocketTraceIsActive;abyss_boolSocketInit(void);voidSocketTerm(void);voidSocketCreate(const struct TSocketVtbl * const vtblP,             void *                     const implP,             TSocket **                 const socketPP);voidSocketWrite(TSocket *             const socketP,            const unsigned char * const buffer,            uint32_t              const len,            abyss_bool *          const failedP);uint32_tSocketRead(TSocket *       const socketP,            unsigned char * const buffer,            uint32_t        const len);abyss_boolSocketConnect(TSocket * const socketP,              TIPAddr * const addrP,              uint16_t  const portNumber);abyss_boolSocketBind(TSocket * const socketP,           TIPAddr * const addrP,           uint16_t  const portNumber);abyss_boolSocketListen(TSocket * const socketP,             uint32_t  const backlog);voidSocketAccept(TSocket *    const listenSocketP,             abyss_bool * const connectedP,             abyss_bool * const failedP,             TSocket **   const acceptedSocketP,             TIPAddr *    const ipAddrP);uint32_tSocketWait(TSocket *  const socketP,           abyss_bool const rd,           abyss_bool const wr,           uint32_t   const timems);uint32_tSocketAvailableReadBytes(TSocket * const socketP);voidSocketGetPeerName(TSocket *    const socketP,                  TIPAddr *    const ipAddrP,                  uint16_t *   const portNumberP,                  abyss_bool * const successP);uint32_tSocketError(TSocket * const socketP);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -