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

📄 clientmacro.h

📁 stun的一个客户端例子
💻 H
📖 第 1 页 / 共 2 页
字号:
#define log_on_Xread_error(sock, buf, size, s, g)                       \    do {                                                                \        UCHAR __tag[2];                                                 \        char __buf[256];                                                \        INT32 dbg;                                                        \        act_on_error((2 == read2((sock), __tag, 2)) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact Read: %s ... ERROR", s); goto g);    \        if (__tag[0] != TAG_OK) {                                       \            act_on_error((__tag[1] == read2((sock), __buf, __tag[1])) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact eat ok: %s ... ERROR", s); goto g);  \			_snprintf(errbuf, 128, " REMOTE-%s", __buf);                \			__tag[0] = TAG_ACKABORT;                                    \            __tag[1] = 0;                                               \            act_on_error((2 == write2((sock), __tag, 2)) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abortack: %s ... ERROR", s); NULL);  \            log1(sock_logr, "Xact: aborted %s", __buf);                 \            goto g;                                                     \        } else if ((size) != __tag[1]) {                                \            log_on_error(-1, "Protocol error", g);                      \        }                                                               \        act_on_error(((size) == (dbg = read2((sock), (buf), (size)))) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "%s ... ERROR", s); log1(sock_logr, "Read %d bytes", dbg); log1(sock_logr, "Expecting %d bytes.", size); goto g);                         \    } while(false)#else#define log_on_Xread_error(sock, buf, size, s, g)                       \    do {                                                                \        UCHAR __tag[2];                                                 \        char __buf[256];                                                \        INT32 dbg;                                                        \        act_on_error((2 == read2((sock), __tag, 2)) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact Read: %s ... ERROR", s); goto g);    \        if (__tag[0] != TAG_OK) {                                       \            act_on_error((__tag[1] == read2((sock), __buf, __tag[1])) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact eat ok: %s ... ERROR", s); goto g);  \			snprintf(errbuf, 128, " REMOTE-%s", __buf);                \			__tag[0] = TAG_ACKABORT;                                    \            __tag[1] = 0;                                               \            act_on_error((2 == write2((sock), __tag, 2)) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abortack: %s ... ERROR", s); NULL);  \            log1(sock_logr, "Xact: aborted %s", __buf);                 \            goto g;                                                     \        } else if ((size) != __tag[1]) {                                \            log_on_error(-1, "Protocol error", g);                      \        }                                                               \        act_on_error(((size) == (dbg = read2((sock), (buf), (size)))) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "%s ... ERROR", s); log1(sock_logr, "Read %d bytes", dbg); log1(sock_logr, "Expecting %d bytes.", size); goto g);                         \    } while(false)#endif#define log_on_Xwrite_error(sock, buf, size, s, g)      \    do {                                                \        UCHAR __tag[2] = {TAG_OK, (size)};              \        act_on_error(2 == write2((sock), __tag, 2) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write: %s ... ERROR", s); goto g);    \        act_on_error((size) == write2((sock), (buf), (size)) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "%s ... ERROR", s); goto g);                        \    } while(false)#ifdef _WIN32#define log_on_Xabort_error(sock, s, g)                 \    do {                                                \        unsigned char __slen = 1 + (unsigned char)strlen(errbuf); \        UCHAR __tag[2] = {TAG_ABORT, __slen};           \        char __buf[256];                                \        INT32 wait = true;                                \        act_on_error(2 == write2((sock), __tag, 2) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abort: %s ... ERROR", s); wait = false);  \        act_on_error(__slen == write2((sock), errbuf, __slen) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abort: %s ... ERROR", (errbuf)); wait = false);  \        while(wait) {                                   \            {                                           \                fd_set __socks;                         \                struct timeval Timeout;                 \                readtimeout((sock), __socks, 45, g);    \            }                                           \            act_on_error(2 == read2((sock), __tag, 2) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact read ack: %s ... ERROR", s); break); \            switch(__tag[0]) {          \                case TAG_OK:            \                    act_on_error(__tag[1] == read2((sock), __buf, __tag[1]) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact eat ok: %s ... ERROR", s); wait = false; break);  \                    break;              \                case TAG_ABORT:         \                    act_on_error(__tag[1] == read2((sock), __buf, __tag[1]) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact eat ok: %s ... ERROR", s); wait = false; break);  \					_snprintf(errbuf + __slen - 1, 128 - __slen + 1, " REMOTE-%s", __buf);   \					__tag[0] = TAG_ACKABORT;       \                    __tag[1] = 0;       \                    act_on_error(2 == write2((sock), __tag, 2) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abortack: %s ... ERROR", s); wait = false; break);  \                    break;              \                case TAG_ACKABORT:      \                    wait = false;       \                    break;              \            }                           \        }                               \    } while(false)#else#define log_on_Xabort_error(sock, s, g)                 \    do {                                                \        unsigned char __slen = 1 + (unsigned char)strlen(errbuf); \        UCHAR __tag[2] = {TAG_ABORT, __slen};           \        char __buf[256];                                \        INT32 wait = true;                                \        act_on_error(2 == write2((sock), __tag, 2) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abort: %s ... ERROR", s); wait = false);  \        act_on_error(__slen == write2((sock), errbuf, __slen) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abort: %s ... ERROR", (errbuf)); wait = false);  \        while(wait) {                                   \            {                                           \                fd_set __socks;                         \                struct timeval Timeout;                 \                readtimeout((sock), __socks, 45, g);    \            }                                           \            act_on_error(2 == read2((sock), __tag, 2) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact read ack: %s ... ERROR", s); break); \            switch(__tag[0]) {          \                case TAG_OK:            \                    act_on_error(__tag[1] == read2((sock), __buf, __tag[1]) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact eat ok: %s ... ERROR", s); wait = false; break);  \                    break;              \                case TAG_ABORT:         \                    act_on_error(__tag[1] == read2((sock), __buf, __tag[1]) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact eat ok: %s ... ERROR", s); wait = false; break);  \					snprintf(errbuf + __slen - 1, 128 - __slen + 1, " REMOTE-%s", __buf);   \					__tag[0] = TAG_ACKABORT;       \                    __tag[1] = 0;       \                    act_on_error(2 == write2((sock), __tag, 2) ? 0 : -1, (s), close2((sock)); log1(sock_logr, "Xact write abortack: %s ... ERROR", s); wait = false; break);  \                    break;              \                case TAG_ACKABORT:      \                    wait = false;       \                    break;              \            }                           \        }                               \    } while(false)#endif#define log_on_Xcommit_error(sock, s, g1, g2)                                       \    {                                                                               \        char bye[] = (s);                                                           \        log_on_Xwrite_error((sock),bye,sizeof(bye),"Sending bye", g1);              \        {                                                                           \            fd_set __socks;                                                         \            struct timeval timeout;                                                 \            readtimeout((sock), __socks, 45, g1);                                   \        }                                                                           \        log_on_Xread_error((sock),bye,sizeof(bye),"Receiving bye", g2);             \    } while(false)#define IPPORT(ip, port) ((ip) >> 0) & 0xFF, ((ip) >> 8) & 0xFF, ((ip) >> 16) & 0xFF, ((ip) >> 24) & 0xFF, ntohs((port))#endif

⌨️ 快捷键说明

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