亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rpcsrv.c

?? PB 熟悉的哥們希望大家可以互相學習一下
?? C
字號:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifndef _WIN32_WCE
    #include <errno.h>
#endif

#ifdef _VXWORKS
    #include <ioLib.h>
    #define MSG_NOSIGNAL 0
#endif 

#ifndef WIN32
    #include <unistd.h>
#endif 

#include "rpcsds.h"
#include "test_intf.h"
#include "test_intf_server.h"

#ifndef _WIN32_WCE
	#include <sys/types.h>
#else
#define EINTR WSAEINTR
#define errno h_errno
#endif

#ifdef _SOLARIS
    #include <stropts.h>
#endif 


#define DATA_THROUGH_A_NETWORK

//#define DATA_THROUGH_A_FILE

#ifdef DATA_THROUGH_A_FILE
    typedef struct tag_test_params
    {
        FILE* w;
        FILE* r;
    } test_params_t, * test_params_p;

    int test_intf_write_stream(void* buf_, unsigned int buf_sz, void* param, unsigned int network_order)
    {

        char* buf = buf_;
        unsigned int i;
        for (i = 0; i < buf_sz; i++)
        {
            printf("%02hhx ", buf[i]);
        };
        printf("\n");

        fwrite(buf_, 1, buf_sz, ((test_params_p)param)->w);

        return 0;
    };

    int test_intf_read_stream(void* buf_, unsigned int buf_sz, void* param, unsigned int network_order, unsigned int*
                              read_sz)
    {

        char* buf = buf_;
        unsigned int i;

        *read_sz = fread(buf_, 1, buf_sz, ((test_params_p)param)->r);

        for (i = 0; i < buf_sz; i++)
        {
            printf("%02hhx ", buf[i]);
        };
        printf("\n");

        return 0;
    };

    int test_intf_is_data_available(mco_rpc_context_p ctx, unsigned int* result)
    {

        /*
        char buf[100];
        printf( "mco_rpc_is_data_available?" ); fgets( buf, sizeof(buf), stdin );
         */

        return 0;
    };
#endif 

#ifdef DATA_THROUGH_A_NETWORK

    #ifndef WIN32
        #include <sys/socket.h>
        #include <sys/ioctl.h>
        #include <netinet/tcp.h>
        #include <netinet/in.h>
        #include <arpa/inet.h>
        #if defined(_HPUX) || defined(_SOLARIS) || defined(_QNX)
            #define MSG_NOSIGNAL 0
        #endif 
    #else 
        #include <winsock2.h>
        #define MSG_NOSIGNAL 0
    #endif 

    #define CONNECTION_POOL	5
    #define CONNECTION_ACCEPT_TIMEOUT_SEC  0
    #define CONNECTION_ACCEPT_TIMEOUT_USEC 300*1000

    typedef struct tag_test_params
    {

        int tl[CONNECTION_POOL + 1];
        unsigned int data_connection_i;

    } test_params_t, * test_params_p;

    int mco_init_network_server_interface(test_params_p nctx, char* intf, unsigned short port)
    {

        unsigned int i;
        struct sockaddr_in sin;

        #ifdef WIN32
            WSADATA wsa;
            int r = WSAStartup(MAKEWORD(2, 0), &wsa);
            if (r != 0)
            {
                WSACleanup();
                return 1;
            };
        #endif 


        nctx->data_connection_i = 0;
        nctx->tl[0] = (int)socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

        for (i = 1; i < sizeof(nctx->tl) / sizeof(nctx->tl[0]); i++)
        {
            nctx->tl[i] =  - 1;
        };

        /* make the first socket to listen for incoming connections */
        sin.sin_family = AF_INET;
        sin.sin_port = htons(port);
        sin.sin_addr.s_addr = inet_addr(intf);

        if (bind(nctx->tl[0], (struct sockaddr*) &sin, sizeof(sin)) ==  - 1)
        {
            return 1;
        }

        if (listen(nctx->tl[0], SOMAXCONN) ==  - 1)
        {
            return 2;
        }

        return 0;
    };

    int mco_clear_network_server_interface(test_params_p nctx)
    {

        unsigned int i;

        for (i = 0; i < sizeof(nctx->tl) / sizeof(nctx->tl[0]); i++)
        {

            if (nctx->tl[i] >= 0)
            {
                #ifndef WIN32  
                    #ifdef _VXWORKS
                        shutdown(nctx->tl[i], 0);
                    #else 
                        shutdown(nctx->tl[i], SHUT_RDWR);
                    #endif 
                    close(nctx->tl[i]);
                #else /* WIN32 */
                    shutdown(nctx->tl[i], SD_BOTH);
                    closesocket(nctx->tl[i]);
                #endif /* WIN32 */
            };
        };

        #ifdef WIN32  
            WSACleanup();
        #endif /* WIN32 */

        return 0;
    };

    int test_intf_is_data_available(mco_rpc_context_p ctx, unsigned int* result)
    {

        unsigned int i, j;
        test_params_p nctx = (test_params_p)ctx->param;
        struct timeval tv;
        fd_set fds;
        int res;
        int maxsockval = 0;
        struct sockaddr_in saddr;

        *result = 0;

        saddr.sin_family = AF_INET;
        saddr.sin_addr.s_addr = INADDR_ANY;
        saddr.sin_port = htons(8082);

        tv.tv_sec = CONNECTION_ACCEPT_TIMEOUT_SEC;
        tv.tv_usec = CONNECTION_ACCEPT_TIMEOUT_USEC;


        /* zeroing fd's */
        FD_ZERO(&fds);

        /* setting the open sockets */
        for (i = 0; i < sizeof(nctx->tl) / sizeof(nctx->tl[0]); i++)
        {

            if (nctx->tl[i] >= 0)
            {

                FD_SET((unsigned int)nctx->tl[i], &fds);
                if (nctx->tl[i] > maxsockval)
                {
                    maxsockval = nctx->tl[i];
                }
            } 

        }


        /* wait for events on open sockets */
        while ((res = select(maxsockval + 1, &fds, 0, 0, &tv)) < 0)
        {
            if (errno != EINTR)
            {
                break;
            }
        }

        /* return if error or timeout */
        if (res <= 0)
        {
            return res;
        }

        /* request sockets */
        for (i = 0; i < sizeof(nctx->tl) / sizeof(nctx->tl[0]); i++)
        {
            unsigned int rcvd = 0;

            if (nctx->tl[i] < 0)
            {
                continue;
            }

            if (!(FD_ISSET(nctx->tl[i], &fds)))
            {
                continue;
            }

            if (i == 0)
            {
                /* listener socket */
                /* find free element of the array & accept the connection */
                for (j = 1; j < sizeof(nctx->tl) / sizeof(nctx->tl[0]); j++)
                {
                    if (nctx->tl[j] < 0)
                    {
                        res = sizeof(saddr);
                        nctx->tl[j] = (int)accept(nctx->tl[0], (struct sockaddr*) &saddr,  &res);
                        break;
                    }
                }
            }
            else
            {

                #ifdef WIN32  
                    res = ioctlsocket(nctx->tl[i], FIONREAD, &rcvd);
                #else /* WIN32 */
                    #ifdef _SOLARIS
                        res = ioctl(nctx->tl[i], I_NREAD, &rcvd);
                    #else 
                        res = ioctl(nctx->tl[i], FIONREAD, &rcvd);
                    #endif 
                #endif 
                #ifdef _SOLARIS
                    if (res)
                    {
                    #else 
                        if (res == 0)
                        {
                        #endif 

                        nctx->data_connection_i = i;
                        *result = 1;
                        return 0;
                    };

                }

            }

            return 0;
        };

        int test_intf_write_stream(void* buf_, unsigned int buf_sz, void* param, unsigned int network_order)
        {

            test_params_p nctx = (test_params_p)param;
            char* buf = buf_;
            unsigned int i;

            if (nctx->data_connection_i == 0)
            {
                return 1;
            }

            for (i = 0; i < buf_sz; i++)
            {
                printf("%02hhx ", buf[i]);
            };
            printf("\n");

            if ( - 1 == send(nctx->tl[nctx->data_connection_i], buf_, buf_sz, MSG_NOSIGNAL))
            {
                return 1;
            }

            return 0;
        };

        int test_intf_read_stream(void* buf_, unsigned int buf_sz, void* param, unsigned int network_order, unsigned
                                  int* read_sz)
        {

            test_params_p nctx = (test_params_p)param;
            char* buf = buf_;
            unsigned int i;

            if ( - 1 == ((*read_sz) = recv(nctx->tl[nctx->data_connection_i], buf_, buf_sz, MSG_NOSIGNAL)))
            {
                return 1;
            }

            for (i = 0; i < buf_sz; i++)
            {
                printf("%02hhx ", buf[i]);
            };
            printf("\n");

            return 0;
        };

    #endif 

    void mco_rpc_fatal_error(int e)
    {

        printf("Fatal error: %d\n", e);
        exit(1);
    };

    extern mco_rpc_context_t test_intf_ctx;

    int test_int(int i)
    {

        return i | 0x5555AAAA;
    };

    void test_void_int(int i){

    }
    ;

    int test_int_string(char* s)
    {

        return atoi(s);
    };

    int test_int_int5(int5 ints)
    {

        return ints[0] + ints[1] + ints[2] + ints[3] + ints[4];
    };

    int test_int_pstruct(test_struct_p pstruct)
    {

        return pstruct->a;
    };

    int test_int_variable_len(test_struct_variable_p p)
    {
        return p->a_sz + p->b_len;
    };

    int test_int_union(test_struct_union_p p)
    {

        return p->tp;
    };

    int hit_test()
    {

        struct timeval tv;
        fd_set fds;

        tv.tv_sec = 0;
        tv.tv_usec = 1000;

        FD_ZERO(&fds);
        FD_SET(0, &fds);

        return select(1, &fds, 0, 0, &tv) > 0 ? 1 : 0;
    };

    int main(int argc, char* argv[])
    {

        int r = 0;
        int test_Mode = 0;
        test_params_t params;
        test_intf_ctx.param = &params;
        #ifndef WIN32
            if (argc > 1 && strstr(argv[1], "--test"))
            {
                test_Mode = 1;
            }
        #endif //

        #ifdef DATA_THROUGH_A_FILE
            params.r = fopen("test1_w.bin", "r");
            params.w = fopen("test1_r.bin", "w");

            while (r == 0)
            {
                printf("%d\n", r = test_intf_dispatch());
            };

            if (params.w)
            {
                fclose(params.w);
            }
            if (params.r)
            {
                fclose(params.r);
            }
        #endif 

        #ifdef DATA_THROUGH_A_NETWORK
            if (0 != mco_init_network_server_interface(&params, "0.0.0.0", 8082))
            {
                printf("Unable to start the server\n");
                return 1;
            };

            while (test_Mode || (r == 0 && 0 == hit_test()))
            {
                printf("%d\n", r = test_intf_dispatch());
            };

            mco_clear_network_server_interface(&params);
        #endif 

        return 0;
    };

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩中文字幕区一区有砖一区 | 免费看欧美美女黄的网站| 中文字幕一区免费在线观看| 久久婷婷综合激情| 亚洲精品一区二区三区福利| 欧美一级日韩免费不卡| 日韩欧美另类在线| 久久女同性恋中文字幕| 欧美精品一区二区不卡| 久久婷婷国产综合精品青草| 亚洲gay无套男同| 丝袜亚洲另类欧美| 久久99久久精品| 国产高清精品网站| 91在线观看美女| 91久久国产综合久久| 欧美色偷偷大香| 91精品中文字幕一区二区三区| 日韩视频免费直播| 久久久国际精品| 亚洲视频一区二区在线| 一区二区在线观看免费| 天天综合网天天综合色| 蓝色福利精品导航| 国产精品一区久久久久| 99精品桃花视频在线观看| 欧美色老头old∨ideo| 精品久久久久久久人人人人传媒| 国产视频一区二区在线观看| 中国色在线观看另类| 一区二区三区中文在线观看| 日韩精品欧美成人高清一区二区| 国产主播一区二区三区| 91色在线porny| 91.麻豆视频| 国产欧美久久久精品影院| 一区二区三区精品在线| 久久精品国产亚洲aⅴ| 国产91精品一区二区麻豆亚洲| 91黄色激情网站| 精品处破学生在线二十三| 国产精品麻豆久久久| 亚洲图片欧美综合| 国产成人精品免费一区二区| 欧美视频在线一区| 久久九九久久九九| 亚洲午夜电影在线观看| 国产成人8x视频一区二区| 亚洲欧美日韩在线不卡| 强制捆绑调教一区二区| 99精品国产99久久久久久白柏| 欧美一区二区三区电影| 国产精品久久久久久久蜜臀 | wwwwxxxxx欧美| 国产女同性恋一区二区| 玉足女爽爽91| 国产乱码一区二区三区| 91福利国产精品| 欧美巨大另类极品videosbest | 日韩av二区在线播放| 免费高清在线一区| 91黄色在线观看| 精品久久免费看| 婷婷六月综合亚洲| 岛国av在线一区| 欧美精品一区二| 亚洲午夜久久久久久久久电影网| 成人伦理片在线| 91精品国产91久久久久久最新毛片| 国产精品福利在线播放| 丝袜a∨在线一区二区三区不卡| 成人激情免费视频| 日韩天堂在线观看| 亚洲a一区二区| 99精品久久99久久久久| 欧美国产在线观看| 久久精品国产成人一区二区三区| 欧美中文字幕亚洲一区二区va在线 | 欧美日韩精品欧美日韩精品| 国产精品久久久久影院| 日韩中文欧美在线| 欧美日韩美少妇| 亚洲欧美偷拍卡通变态| 成人av网站免费| 精品久久人人做人人爱| 麻豆精品视频在线| 欧美午夜在线观看| 一区二区三区影院| 成人高清免费观看| 日本欧美一区二区| 欧美亚洲精品一区| 亚洲免费观看在线观看| 成a人片亚洲日本久久| 久久精品视频在线免费观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美久久一二区| 亚洲午夜久久久久久久久电影网 | 欧美变态口味重另类| 丝袜亚洲精品中文字幕一区| 欧美另类z0zxhd电影| 伊人婷婷欧美激情| 在线观看国产日韩| 亚洲久本草在线中文字幕| 97se亚洲国产综合在线| 国产精品免费视频网站| av一区二区三区黑人| 欧美国产一区在线| 91丨porny丨国产入口| 国产精品天干天干在线综合| av不卡在线观看| 中文字幕一区二区三区色视频| 成人av综合一区| 国产精品无码永久免费888| 99久久国产综合精品色伊| 中文字幕不卡在线播放| 国产高清在线观看免费不卡| 国产无遮挡一区二区三区毛片日本| 极品美女销魂一区二区三区| 久久免费的精品国产v∧| 国产福利91精品一区| 国产目拍亚洲精品99久久精品| 激情久久久久久久久久久久久久久久| 日韩小视频在线观看专区| 一区二区在线观看视频| 欧美久久久久久久久| 亚洲一区视频在线观看视频| 4438亚洲最大| 日产精品久久久久久久性色| 欧美一区二区三区免费| 激情亚洲综合在线| 国产精品免费网站在线观看| 91色综合久久久久婷婷| 亚洲午夜免费视频| 久久综合一区二区| 高清不卡一二三区| 亚洲国产三级在线| 制服视频三区第一页精品| 国产高清无密码一区二区三区| 日本一区二区免费在线| 色婷婷综合久久久| 亚洲一二三区不卡| 日韩欧美国产麻豆| av男人天堂一区| 午夜免费久久看| 中文字幕精品—区二区四季| 91福利视频久久久久| 韩国一区二区三区| 亚洲欧洲日韩女同| 日韩精品中文字幕一区| 国产69精品久久久久777| 亚洲观看高清完整版在线观看| 日韩一区二区影院| 99精品桃花视频在线观看| 一个色在线综合| 欧美电影精品一区二区| 波多野结衣亚洲| 亚洲激情图片一区| 精品国产伦一区二区三区观看方式 | 99久久精品国产一区| 日韩精彩视频在线观看| 久久精品男人天堂av| 51精品秘密在线观看| 91亚洲精品久久久蜜桃网站 | 久久精品欧美一区二区三区麻豆| av在线综合网| 免费精品视频在线| 国产精品免费免费| 精品剧情在线观看| 欧洲av在线精品| 成人午夜精品一区二区三区| 五月婷婷综合网| 亚洲乱码日产精品bd| 欧美日韩三级在线| aaa国产一区| 久草热8精品视频在线观看| 欧美激情一二三区| 9191精品国产综合久久久久久| 成人av在线影院| 麻豆一区二区99久久久久| 亚洲色图制服丝袜| 国产婷婷色一区二区三区在线| 欧美一区二区视频观看视频| av一区二区三区| 福利一区二区在线| 亚洲午夜私人影院| 一区二区三区中文在线| 中文字幕佐山爱一区二区免费| 欧美成人三级在线| 欧美电视剧在线观看完整版| 欧美亚洲动漫精品| 91色九色蝌蚪| 久久精工是国产品牌吗| 亚洲最大成人综合| 国产精品久线观看视频| 精品久久人人做人人爰| 欧美一区二区久久久| 欧美日韩美女一区二区| 91首页免费视频| 不卡av电影在线播放| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 |