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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ioq_tcp.c

?? 基于sip協(xié)議的網(wǎng)絡(luò)電話源碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
    pj_sock_t csock1=-1;    pj_sockaddr_in addr;    pj_pool_t *pool = NULL;    pj_ioqueue_t *ioque = NULL;    pj_ioqueue_key_t *ckey1;    pj_ssize_t status = -1;    int pending_op = 0;    pj_str_t s;    pj_status_t rc;    // Create pool.    pool = pj_pool_create(mem, NULL, POOL_SIZE, 4000, NULL);    // Create I/O Queue.    rc = pj_ioqueue_create(pool, PJ_IOQUEUE_MAX_HANDLES, &ioque);    if (!ioque) {	status=-20; goto on_error;    }    // Create client socket    rc = pj_sock_socket(PJ_AF_INET, PJ_SOCK_STREAM, 0, &csock1);    if (rc != PJ_SUCCESS) {        app_perror("...ERROR in pj_sock_socket()", rc);	status=-1; goto on_error;    }    // Register client socket.    rc = pj_ioqueue_register_sock(pool, ioque, csock1, NULL,                                   &test_cb, &ckey1);    if (rc != PJ_SUCCESS) {        app_perror("...ERROR in pj_ioqueue_register_sock()", rc);	status=-23; goto on_error;    }    // Initialize remote address.    pj_sockaddr_in_init(&addr, pj_cstr(&s, "127.0.0.1"), NON_EXISTANT_PORT);    // Client socket connect()    status = pj_ioqueue_connect(ckey1, &addr, sizeof(addr));    if (status==PJ_SUCCESS) {	// unexpectedly success!	status = -30;	goto on_error;    }    if (status != PJ_EPENDING) {	// success    } else {	++pending_op;    }    callback_connect_status = -2;    callback_connect_key = NULL;    // Poll until we've got result    while (pending_op) {	pj_time_val timeout = {1, 0};	status=pj_ioqueue_poll(ioque, &timeout);	if (status > 0) {            if (callback_connect_key==ckey1) {		if (callback_connect_status == 0) {		    // unexpectedly connected!		    status = -50;		    goto on_error;		}	    }	    if (status > pending_op) {		PJ_LOG(3,(THIS_FILE,			  "...error: pj_ioqueue_poll() returned %d "			  "(only expecting %d)",			  status, pending_op));		return -552;	    }	    pending_op -= status;	    if (pending_op == 0) {		status = 0;	    }	}    }    // There's no pending operation.    // When we poll the ioqueue, there must not be events.    if (pending_op == 0) {        pj_time_val timeout = {1, 0};        status = pj_ioqueue_poll(ioque, &timeout);        if (status != 0) {            status=-60; goto on_error;        }    }    // Success    status = 0;on_error:    if (csock1 != PJ_INVALID_SOCKET)	pj_sock_close(csock1);    if (ioque != NULL)	pj_ioqueue_destroy(ioque);    pj_pool_release(pool);    return status;}/* * Repeated connect/accept on the same listener socket. */static int compliance_test_2(void){    enum { MAX_PAIR = 4, TEST_LOOP = 2 };    struct listener    {	pj_sock_t	     sock;	pj_ioqueue_key_t    *key;	pj_sockaddr_in	     addr;	int		     addr_len;    } listener;    struct server    {	pj_sock_t	     sock;	pj_ioqueue_key_t    *key;	pj_sockaddr_in	     local_addr;	pj_sockaddr_in	     rem_addr;	int		     rem_addr_len;	pj_ioqueue_op_key_t  accept_op;    } server[MAX_PAIR];    struct client    {	pj_sock_t	     sock;	pj_ioqueue_key_t    *key;    } client[MAX_PAIR];    pj_pool_t *pool = NULL;    char *send_buf, *recv_buf;    pj_ioqueue_t *ioque = NULL;    int i, bufsize = BUF_MIN_SIZE;    pj_ssize_t status;    int test_loop, pending_op = 0;    pj_timestamp t_elapsed;    pj_str_t s;    pj_status_t rc;    // Create pool.    pool = pj_pool_create(mem, NULL, POOL_SIZE, 4000, NULL);    // Create I/O Queue.    rc = pj_ioqueue_create(pool, PJ_IOQUEUE_MAX_HANDLES, &ioque);    if (rc != PJ_SUCCESS) {        app_perror("...ERROR in pj_ioqueue_create()", rc);	return -10;    }    // Allocate buffers for send and receive.    send_buf = (char*)pj_pool_alloc(pool, bufsize);    recv_buf = (char*)pj_pool_alloc(pool, bufsize);    // Create listener socket    rc = pj_sock_socket(PJ_AF_INET, PJ_SOCK_STREAM, 0, &listener.sock);    if (rc != PJ_SUCCESS) {        app_perror("...error creating socket", rc);        status=-20; goto on_error;    }    // Bind listener socket.    pj_sockaddr_in_init(&listener.addr, 0, 0);    if ((rc=pj_sock_bind(listener.sock, &listener.addr, sizeof(listener.addr))) != 0 ) {        app_perror("...bind error", rc);	status=-30; goto on_error;    }    // Get listener address.    listener.addr_len = sizeof(listener.addr);    rc = pj_sock_getsockname(listener.sock, &listener.addr, &listener.addr_len);    if (rc != PJ_SUCCESS) {        app_perror("...ERROR in pj_sock_getsockname()", rc);	status=-40; goto on_error;    }    listener.addr.sin_addr = pj_inet_addr(pj_cstr(&s, "127.0.0.1"));    // Register listener socket.    rc = pj_ioqueue_register_sock(pool, ioque, listener.sock, NULL, &test_cb, 				  &listener.key);    if (rc != PJ_SUCCESS) {	app_perror("...ERROR", rc);	status=-50; goto on_error;    }    // Listener socket listen().    if (pj_sock_listen(listener.sock, 5)) {        app_perror("...ERROR in pj_sock_listen()", rc);	status=-60; goto on_error;    }    for (test_loop=0; test_loop < TEST_LOOP; ++test_loop) {	// Client connect and server accept.	for (i=0; i<MAX_PAIR; ++i) {	    rc = pj_sock_socket(PJ_AF_INET, PJ_SOCK_STREAM, 0, &client[i].sock);	    if (rc != PJ_SUCCESS) {		app_perror("...error creating socket", rc);		status=-70; goto on_error;	    }	    rc = pj_ioqueue_register_sock(pool, ioque, client[i].sock, NULL, 					  &test_cb, &client[i].key);	    if (rc != PJ_SUCCESS) {		app_perror("...error ", rc);		status=-80; goto on_error;	    }	    // Server socket accept()	    pj_ioqueue_op_key_init(&server[i].accept_op, 				   sizeof(server[i].accept_op));	    server[i].rem_addr_len = sizeof(pj_sockaddr_in);	    status = pj_ioqueue_accept(listener.key, &server[i].accept_op, 				       &server[i].sock, &server[i].local_addr, 				       &server[i].rem_addr, 				       &server[i].rem_addr_len);	    if (status!=PJ_SUCCESS && status != PJ_EPENDING) {		app_perror("...ERROR in pj_ioqueue_accept()", rc);		status=-90; goto on_error;	    }	    if (status==PJ_EPENDING) {		++pending_op;	    }	    // Client socket connect()	    status = pj_ioqueue_connect(client[i].key, &listener.addr, 					sizeof(listener.addr));	    if (status!=PJ_SUCCESS && status != PJ_EPENDING) {		app_perror("...ERROR in pj_ioqueue_connect()", rc);		status=-100; goto on_error;	    }	    if (status==PJ_EPENDING) {		++pending_op;	    }	}	// Poll until all connected	while (pending_op) {	    pj_time_val timeout = {1, 0};	    status=pj_ioqueue_poll(ioque, &timeout);	    if (status > 0) {		if (status > pending_op) {		    PJ_LOG(3,(THIS_FILE,			      "...error: pj_ioqueue_poll() returned %d "			      "(only expecting %d)",			      status, pending_op));		    return -110;		}		pending_op -= status;		if (pending_op == 0) {		    status = 0;		}	    }	}	// There's no pending operation.	// When we poll the ioqueue, there must not be events.	if (pending_op == 0) {	    pj_time_val timeout = {1, 0};	    status = pj_ioqueue_poll(ioque, &timeout);	    if (status != 0) {		status=-120; goto on_error;	    }	}	for (i=0; i<MAX_PAIR; ++i) {	    // Check server socket.	    if (server[i].sock == PJ_INVALID_SOCKET) {		status = -130;		app_perror("...accept() error", pj_get_os_error());		goto on_error;	    }	    // Check addresses	    if (server[i].local_addr.sin_family != PJ_AF_INET ||		server[i].local_addr.sin_addr.s_addr == 0 ||		server[i].local_addr.sin_port == 0)	    {		app_perror("...ERROR address not set", rc);		status = -140;		goto on_error;	    }	    if (server[i].rem_addr.sin_family != PJ_AF_INET ||		server[i].rem_addr.sin_addr.s_addr == 0 ||		server[i].rem_addr.sin_port == 0)	    {		app_perror("...ERROR address not set", rc);		status = -150;		goto on_error;	    }	    // Register newly accepted socket.	    rc = pj_ioqueue_register_sock(pool, ioque, server[i].sock, NULL,					  &test_cb, &server[i].key);	    if (rc != PJ_SUCCESS) {		app_perror("...ERROR in pj_ioqueue_register_sock", rc);		status = -160;		goto on_error;	    }	    // Test send and receive.	    t_elapsed.u32.lo = 0;	    status = send_recv_test(ioque, server[i].key, client[i].key, 				    send_buf, recv_buf, bufsize, &t_elapsed);	    if (status != 0) {		goto on_error;	    }	}	// Success	status = 0;	for (i=0; i<MAX_PAIR; ++i) {	    if (server[i].key != NULL) {		pj_ioqueue_unregister(server[i].key);		server[i].key = NULL;		server[i].sock = PJ_INVALID_SOCKET;	    } else if (server[i].sock != PJ_INVALID_SOCKET) {		pj_sock_close(server[i].sock);		server[i].sock = PJ_INVALID_SOCKET;	    }	    if (client[i].key != NULL) {		pj_ioqueue_unregister(client[i].key);		client[i].key = NULL;		client[i].sock = PJ_INVALID_SOCKET;	    } else if (client[i].sock != PJ_INVALID_SOCKET) {		pj_sock_close(client[i].sock);		client[i].sock = PJ_INVALID_SOCKET;	    }	}    }    status = 0;on_error:    for (i=0; i<MAX_PAIR; ++i) {	if (server[i].key != NULL) {	    pj_ioqueue_unregister(server[i].key);	    server[i].key = NULL;	    server[i].sock = PJ_INVALID_SOCKET;	} else if (server[i].sock != PJ_INVALID_SOCKET) {	    pj_sock_close(server[i].sock);	    server[i].sock = PJ_INVALID_SOCKET;	}	if (client[i].key != NULL) {	    pj_ioqueue_unregister(client[i].key);	    client[i].key = NULL;	    server[i].sock = PJ_INVALID_SOCKET;	} else if (client[i].sock != PJ_INVALID_SOCKET) {	    pj_sock_close(client[i].sock);	    client[i].sock = PJ_INVALID_SOCKET;	}    }    if (listener.key) {	pj_ioqueue_unregister(listener.key);	listener.key = NULL;    } else if (listener.sock != PJ_INVALID_SOCKET) {	pj_sock_close(listener.sock);	listener.sock = PJ_INVALID_SOCKET;    }    if (ioque != NULL)	pj_ioqueue_destroy(ioque);    pj_pool_release(pool);    return status;}int tcp_ioqueue_test(){    int status;    PJ_LOG(3, (THIS_FILE, "..%s compliance test 0 (success scenario)",	       pj_ioqueue_name()));    if ((status=compliance_test_0()) != 0) {	PJ_LOG(1, (THIS_FILE, "....FAILED (status=%d)\n", status));	return status;    }    PJ_LOG(3, (THIS_FILE, "..%s compliance test 1 (failed scenario)",               pj_ioqueue_name()));    if ((status=compliance_test_1()) != 0) {	PJ_LOG(1, (THIS_FILE, "....FAILED (status=%d)\n", status));	return status;    }    PJ_LOG(3, (THIS_FILE, "..%s compliance test 2 (repeated accept)",               pj_ioqueue_name()));    if ((status=compliance_test_2()) != 0) {	PJ_LOG(1, (THIS_FILE, "....FAILED (status=%d)\n", status));	return status;    }    return 0;}#endif	/* PJ_HAS_TCP */#else/* To prevent warning about "translation unit is empty" * when this test is disabled.  */int dummy_uiq_tcp;#endif	/* INCLUDE_TCP_IOQUEUE_TEST */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产伦精一区二区三区| 欧美日韩国产综合一区二区三区| 日本aⅴ免费视频一区二区三区| 亚洲男人天堂av网| 国产亚洲欧美日韩在线一区| 久久久久九九视频| 91成人免费在线视频| 在线观看免费视频综合| 欧美无人高清视频在线观看| 欧美日韩一区二区在线观看视频| 欧美亚洲国产怡红院影院| 欧美日韩国产一级片| 欧美精品tushy高清| 日韩精品在线一区| 国产视频亚洲色图| 成人欧美一区二区三区1314 | 久久无码av三级| 久久综合色婷婷| 精品成人私密视频| 在线观看亚洲专区| 欧美日本一区二区| 欧美一级日韩一级| 久久综合九色综合97婷婷| 国产三级精品三级| 国产精品三级电影| 亚洲成人自拍一区| 激情文学综合网| 国产精品一级在线| 97久久超碰国产精品电影| 欧美日韩五月天| 精品免费日韩av| 中文字幕日韩精品一区| 亚洲一级二级在线| 国模娜娜一区二区三区| 成人a免费在线看| 欧美视频第二页| 精品少妇一区二区三区视频免付费| 亚洲国产精品成人综合| 亚洲成a人片在线不卡一二三区| 免费看日韩精品| 成人av网站在线| 91精品国产91久久久久久一区二区| 欧美大片一区二区三区| 亚洲欧美色综合| 久久电影网站中文字幕| 一本一道久久a久久精品综合蜜臀| 欧美精品丝袜中出| 国产精品久久三| 免费视频一区二区| 色综合视频一区二区三区高清| 日韩午夜精品电影| 亚洲卡通欧美制服中文| 国产一区二区调教| 欧美日韩一区高清| 中文字幕一区二区不卡| 男女性色大片免费观看一区二区 | 日韩精品一区在线| 一区二区视频在线| 国产综合久久久久久鬼色| 在线视频综合导航| 国产欧美精品一区二区三区四区| 亚洲韩国精品一区| 成人18精品视频| 欧美成人激情免费网| 亚洲一二三区在线观看| 国产成人免费视频网站高清观看视频| 91福利区一区二区三区| 国产欧美日韩另类一区| 日韩av午夜在线观看| 日本久久电影网| 久久久久国产成人精品亚洲午夜| 亚洲va欧美va人人爽| jvid福利写真一区二区三区| 精品国产伦一区二区三区观看方式 | 欧美在线一区二区三区| 成人av一区二区三区| 成人精品一区二区三区中文字幕| 一区二区三区欧美日韩| 国产成人免费xxxxxxxx| 欧美乱熟臀69xxxxxx| 最新日韩在线视频| 91在线观看美女| 欧美国产一区二区| 国内精品伊人久久久久影院对白| 欧美日韩二区三区| 国产精品第四页| 成人一区二区视频| 国产婷婷色一区二区三区在线| 日韩av网站在线观看| 欧美日本国产一区| 免费看日韩a级影片| 精品国产凹凸成av人网站| 日本最新不卡在线| 日韩欧美色电影| 国产综合久久久久久久久久久久| 日韩欧美国产高清| 国产资源在线一区| 久久精品夜夜夜夜久久| 国产一区二区三区四| 亚洲私人影院在线观看| 久久不见久久见中文字幕免费| 色狠狠桃花综合| 亚洲高清在线视频| 日韩欧美久久一区| 成人h精品动漫一区二区三区| 亚洲美女免费在线| 日韩精品中午字幕| 91老师片黄在线观看| 一区二区三区欧美视频| 99re在线精品| 国产精品一区久久久久| 99久久久久免费精品国产 | 欧美一卡二卡在线| 欧美日精品一区视频| 亚洲mv大片欧洲mv大片精品| 欧美精三区欧美精三区| 亚洲伊人色欲综合网| 欧美三日本三级三级在线播放| 亚洲最大成人网4388xx| 欧美日韩中文字幕精品| 三级在线观看一区二区| 欧美大片一区二区三区| 成人一级片网址| 亚洲激情中文1区| 91精品福利在线一区二区三区 | 中文字幕色av一区二区三区| 91啪九色porn原创视频在线观看| 亚洲欧美偷拍卡通变态| 欧美日韩成人一区二区| 精品一区二区三区av| 国产精品女上位| 91久久香蕉国产日韩欧美9色| 亚洲成av人影院在线观看网| 欧美一级淫片007| 国产福利一区二区三区视频在线 | 精品日韩av一区二区| 国产成人99久久亚洲综合精品| 国产精品美女久久福利网站| 99久久精品免费看国产免费软件| 一区二区三区四区在线| 欧美一级理论片| 国产经典欧美精品| 夜色激情一区二区| 日韩一区二区高清| 丁香婷婷综合激情五月色| 亚洲蜜桃精久久久久久久| 91精品国产色综合久久不卡电影 | 国产综合色精品一区二区三区| 国产精品久99| 69堂成人精品免费视频| 国产成人精品影院| 亚洲国产精品欧美一二99| 久久久99精品久久| 欧美日韩精品免费| 成人免费视频免费观看| 视频一区中文字幕| 日本一区二区三区国色天香 | 91首页免费视频| 麻豆久久一区二区| 亚洲欧美一区二区三区久本道91 | 久久久久久免费| 欧美视频在线观看一区| 国产综合色视频| 午夜久久久影院| 亚洲天堂成人网| 久久亚洲私人国产精品va媚药| 91福利社在线观看| 丁香啪啪综合成人亚洲小说 | 欧美性生活一区| 成人在线视频一区| 久久精品国产免费| 亚洲国产精品一区二区久久| 国产精品美女久久久久高潮| 欧美电影免费观看完整版| 欧洲日韩一区二区三区| 国产.欧美.日韩| 国内精品久久久久影院薰衣草| 亚洲444eee在线观看| 亚洲免费在线观看视频| 国产人伦精品一区二区| 日韩精品一区二区三区在线观看| 欧美日韩亚洲国产综合| 91极品视觉盛宴| 99久久夜色精品国产网站| 国产精品一区免费视频| 久久电影网电视剧免费观看| 性做久久久久久免费观看| 夜夜揉揉日日人人青青一国产精品 | 日韩精品一区二区三区四区| 欧美日韩成人综合在线一区二区| 91色综合久久久久婷婷| 成人黄色电影在线| 高清不卡一区二区| 国产精品69毛片高清亚洲| 另类小说色综合网站| 日本vs亚洲vs韩国一区三区 | 日本亚洲欧美天堂免费| 亚洲国产精品久久久久婷婷884 | 91国产免费观看| www.成人网.com|