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

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

?? echo_clt.c

?? 基于sip協(xié)議的網(wǎng)絡(luò)電話源碼
?? C
字號:
/* $Id: echo_clt.c 974 2007-02-19 01:13:53Z bennylp $ *//*  * Copyright (C)2003-2007 Benny Prijono <benny@prijono.org> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  */#include "test.h"#include <pjlib.h>#if INCLUDE_ECHO_CLIENTenum { BUF_SIZE = 512 };struct client{    int sock_type;    const char *server;    int port;};static pj_atomic_t *totalBytes;static pj_atomic_t *timeout_counter;static pj_atomic_t *invalid_counter;#define MSEC_PRINT_DURATION 1000static int wait_socket(pj_sock_t sock, unsigned msec_timeout){    pj_fd_set_t fdset;    pj_time_val timeout;    timeout.sec = 0;    timeout.msec = msec_timeout;    pj_time_val_normalize(&timeout);    PJ_FD_ZERO(&fdset);    PJ_FD_SET(sock, &fdset);        return pj_sock_select(FD_SETSIZE, &fdset, NULL, NULL, &timeout);}static int echo_client_thread(void *arg){    pj_sock_t sock;    char send_buf[BUF_SIZE];    char recv_buf[BUF_SIZE];    pj_sockaddr_in addr;    pj_str_t s;    pj_status_t rc;    pj_uint32_t buffer_id;    pj_uint32_t buffer_counter;    struct client *client = arg;    pj_status_t last_recv_err = PJ_SUCCESS, last_send_err = PJ_SUCCESS;    unsigned counter = 0;    rc = app_socket(PJ_AF_INET, client->sock_type, 0, -1, &sock);    if (rc != PJ_SUCCESS) {        app_perror("...unable to create socket", rc);        return -10;    }    rc = pj_sockaddr_in_init( &addr, pj_cstr(&s, client->server),                               (pj_uint16_t)client->port);    if (rc != PJ_SUCCESS) {        app_perror("...unable to resolve server", rc);        return -15;    }    rc = pj_sock_connect(sock, &addr, sizeof(addr));    if (rc != PJ_SUCCESS) {        app_perror("...connect() error", rc);        pj_sock_close(sock);        return -20;    }    PJ_LOG(3,("", "...socket connected to %s:%d", 		  pj_inet_ntoa(addr.sin_addr),		  pj_ntohs(addr.sin_port)));    pj_memset(send_buf, 'A', BUF_SIZE);    send_buf[BUF_SIZE-1]='\0';    /* Give other thread chance to initialize themselves! */    pj_thread_sleep(200);    //PJ_LOG(3,("", "...thread %p running", pj_thread_this()));    buffer_id = (pj_uint32_t) pj_thread_this();    buffer_counter = 0;    *(pj_uint32_t*)send_buf = buffer_id;    for (;;) {        int rc;        pj_ssize_t bytes;	++counter;	//while (wait_socket(sock,0) > 0)	//    ;        /* Send a packet. */        bytes = BUF_SIZE;	*(pj_uint32_t*)(send_buf+4) = ++buffer_counter;        rc = pj_sock_send(sock, send_buf, &bytes, 0);        if (rc != PJ_SUCCESS || bytes != BUF_SIZE) {            if (rc != last_send_err) {                app_perror("...send() error", rc);                PJ_LOG(3,("", "...ignoring subsequent error.."));                last_send_err = rc;                pj_thread_sleep(100);            }            continue;        }        rc = wait_socket(sock, 500);        if (rc == 0) {            PJ_LOG(3,("", "...timeout"));	    bytes = 0;	    pj_atomic_inc(timeout_counter);	} else if (rc < 0) {	    rc = pj_get_netos_error();	    app_perror("...select() error", rc);	    break;        } else {            /* Receive back the original packet. */            bytes = 0;            do {                pj_ssize_t received = BUF_SIZE - bytes;                rc = pj_sock_recv(sock, recv_buf+bytes, &received, 0);                if (rc != PJ_SUCCESS || received == 0) {                    if (rc != last_recv_err) {                        app_perror("...recv() error", rc);                        PJ_LOG(3,("", "...ignoring subsequent error.."));                        last_recv_err = rc;                        pj_thread_sleep(100);                    }                    bytes = 0;		    received = 0;                    break;                }                bytes += received;            } while (bytes != BUF_SIZE && bytes != 0);        }        if (bytes == 0)            continue;        if (pj_memcmp(send_buf, recv_buf, BUF_SIZE) != 0) {	    recv_buf[BUF_SIZE-1] = '\0';            PJ_LOG(3,("", "...error: buffer %u has changed!\n"			  "send_buf=%s\n"			  "recv_buf=%s\n", 			  counter, send_buf, recv_buf));	    pj_atomic_inc(invalid_counter);        }        /* Accumulate total received. */	pj_atomic_add(totalBytes, bytes);    }    pj_sock_close(sock);    return 0;}int echo_client(int sock_type, const char *server, int port){    pj_pool_t *pool;    pj_thread_t *thread[ECHO_CLIENT_MAX_THREADS];    pj_status_t rc;    struct client client;    int i;    pj_atomic_value_t last_received;    pj_timestamp last_report;    client.sock_type = sock_type;    client.server = server;    client.port = port;    pool = pj_pool_create( mem, NULL, 4000, 4000, NULL );    rc = pj_atomic_create(pool, 0, &totalBytes);    if (rc != PJ_SUCCESS) {        PJ_LOG(3,("", "...error: unable to create atomic variable", rc));        return -30;    }    rc = pj_atomic_create(pool, 0, &invalid_counter);    rc = pj_atomic_create(pool, 0, &timeout_counter);    PJ_LOG(3,("", "Echo client started"));    PJ_LOG(3,("", "  Destination: %s:%d",                   ECHO_SERVER_ADDRESS, ECHO_SERVER_START_PORT));    PJ_LOG(3,("", "  Press Ctrl-C to exit"));    for (i=0; i<ECHO_CLIENT_MAX_THREADS; ++i) {        rc = pj_thread_create( pool, NULL, &echo_client_thread, &client,                                PJ_THREAD_DEFAULT_STACK_SIZE, 0,                               &thread[i]);        if (rc != PJ_SUCCESS) {            app_perror("...error: unable to create thread", rc);            return -10;        }    }    last_received = 0;    pj_get_timestamp(&last_report);    for (;;) {	pj_timestamp now;	unsigned long received, cur_received;	unsigned msec;	pj_highprec_t bw;	pj_time_val elapsed;	unsigned bw32;	pj_uint32_t timeout, invalid;	pj_thread_sleep(1000);	pj_get_timestamp(&now);	elapsed = pj_elapsed_time(&last_report, &now);	msec = PJ_TIME_VAL_MSEC(elapsed);	received = pj_atomic_get(totalBytes);	cur_received = received - last_received;		bw = cur_received;	pj_highprec_mul(bw, 1000);	pj_highprec_div(bw, msec);	bw32 = (unsigned)bw;		last_report = now;	last_received = received;	timeout = pj_atomic_get(timeout_counter);	invalid = pj_atomic_get(invalid_counter);        PJ_LOG(3,("", 	          "...%d threads, total bandwidth: %d KB/s, "		  "timeout=%d, invalid=%d",                   ECHO_CLIENT_MAX_THREADS, bw32/1000,		  timeout, invalid));    }    for (i=0; i<ECHO_CLIENT_MAX_THREADS; ++i) {        pj_thread_join( thread[i] );    }    pj_pool_release(pool);    return 0;}#elseint dummy_echo_client;#endif  /* INCLUDE_ECHO_CLIENT */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产视频一区在线观看| 人人狠狠综合久久亚洲| 亚洲国产精品二十页| 久久综合久色欧美综合狠狠| 91精品国产综合久久久久| 在线视频一区二区免费| 日本韩国欧美在线| 91九色最新地址| 日本高清无吗v一区| 色婷婷av一区二区| 欧美在线视频全部完| 欧美在线观看一区| 欧美视频精品在线| 欧美日韩国产另类一区| 欧美疯狂做受xxxx富婆| 4438亚洲最大| 亚洲精品在线观看网站| 精品国产乱码久久久久久图片| 欧美videos中文字幕| 久久精品亚洲麻豆av一区二区| 久久精品人人做人人爽97| 亚洲国产成人自拍| 亚洲精品一二三区| 亚洲va欧美va天堂v国产综合| 五月婷婷另类国产| 久久成人免费日本黄色| 国产一区二区导航在线播放| 成人永久看片免费视频天堂| 91尤物视频在线观看| 在线看日韩精品电影| 制服丝袜激情欧洲亚洲| 久久亚洲综合色一区二区三区| 欧美激情综合在线| 亚洲欧美日韩综合aⅴ视频| 亚洲一级二级在线| 极品少妇一区二区| 成人综合在线视频| 欧美影片第一页| 日韩精品最新网址| 国产精品传媒在线| 石原莉奈在线亚洲二区| 国产精品影视网| 91福利小视频| 精品剧情在线观看| 亚洲天堂中文字幕| 美国毛片一区二区| 岛国精品在线播放| 欧美精品色综合| 久久久久久久久久看片| 亚洲激情在线播放| 美女精品自拍一二三四| 99久久久久久| 欧美xfplay| 一区二区三区精品久久久| 精品系列免费在线观看| 91亚洲精品久久久蜜桃| 欧美一区二区三区四区久久| 中文字幕一区二区视频| 蜜臀精品久久久久久蜜臀 | 99久久99久久精品免费看蜜桃| 欧美三级电影一区| 国产亚洲精品7777| 午夜成人免费电影| av电影一区二区| 日韩一级免费一区| 亚洲免费av高清| 国产美女在线观看一区| 欧美亚洲动漫精品| 国产精品入口麻豆原神| 日本不卡的三区四区五区| 99免费精品视频| 精品国产髙清在线看国产毛片| 亚洲精品视频在线观看网站| 国产一区二区福利视频| 69p69国产精品| 亚洲乱码国产乱码精品精可以看 | 不卡一区二区中文字幕| 日韩欧美久久一区| 亚洲第一成人在线| 成人黄色免费短视频| 日韩欧美的一区二区| 亚洲一区免费观看| www.欧美精品一二区| 久久美女艺术照精彩视频福利播放| 亚欧色一区w666天堂| 91色|porny| 亚洲国产成人在线| 国产成人在线看| 精品av综合导航| 免费一级欧美片在线观看| 欧美图区在线视频| 一区二区三区欧美在线观看| 99久久er热在这里只有精品15| 国产喷白浆一区二区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美性淫爽ww久久久久无| 亚洲女人小视频在线观看| av午夜一区麻豆| 中文在线资源观看网站视频免费不卡| 精品一区二区三区视频在线观看 | 国产精品久久久久久久久动漫| 国产一区二区视频在线播放| 欧美一区二区视频免费观看| 日韩中文字幕1| 91精品国产综合久久久久久| 欧美精品免费视频| 国产麻豆精品一区二区| 一区二区三区自拍| 在线免费一区三区| 精品国产一区二区三区忘忧草| 亚洲国产精品久久久久婷婷884| 在线一区二区三区| 一区二区三区成人| 欧美在线观看禁18| 亚洲丰满少妇videoshd| 在线不卡a资源高清| 人禽交欧美网站| 日韩欧美国产小视频| 美女视频黄 久久| 久久婷婷色综合| 狠狠色狠狠色综合| 久久女同精品一区二区| 国产一区二区三区黄视频 | 欧美少妇性性性| 亚洲综合在线电影| 色婷婷久久久久swag精品 | 九色|91porny| 亚洲精品视频一区| 99国产麻豆精品| 亚洲婷婷在线视频| 91香蕉视频黄| 一区二区三区丝袜| 欧美精品一区二区三区在线| 日本91福利区| 欧美成人精品高清在线播放| 久久av资源网| 久久久91精品国产一区二区精品| 日韩不卡一区二区| 欧美体内she精高潮| 亚洲成人在线免费| 91精品国产欧美一区二区成人| 免费一级片91| 久久蜜桃av一区二区天堂 | 97精品视频在线观看自产线路二| 国产精品传媒在线| 91福利在线导航| 午夜精品福利一区二区三区蜜桃| 欧美伦理电影网| 国产凹凸在线观看一区二区| 综合久久久久久| 欧美久久久久久蜜桃| 男女男精品网站| 久久精品在线观看| 欧美三级一区二区| 免费看黄色91| 中文字幕欧美区| 一本色道**综合亚洲精品蜜桃冫| 另类小说欧美激情| 国产欧美一区二区三区鸳鸯浴| 99re视频精品| 日韩电影免费在线| 久久久五月婷婷| 成人国产免费视频| 亚洲私人影院在线观看| 欧美日免费三级在线| 亚洲1区2区3区视频| 日韩欧美国产1| 99精品久久只有精品| 日韩在线a电影| 欧美激情在线观看视频免费| 色94色欧美sute亚洲线路一ni| 狠狠色狠狠色合久久伊人| 综合av第一页| 日韩欧美亚洲另类制服综合在线| 成人一道本在线| 久久超碰97人人做人人爱| 国产精品久久久久久久第一福利| 欧美日韩一区在线观看| 国产精品羞羞答答xxdd| 国产suv一区二区三区88区| 91精品国产欧美一区二区成人| 蜜桃一区二区三区在线观看| 久久久五月婷婷| 欧美日韩一区二区在线观看 | 色av一区二区| 韩国精品久久久| 天堂影院一区二区| 欧美国产乱子伦| 日韩一级成人av| 91精品福利视频| 国产成人夜色高潮福利影视| 亚洲精选视频免费看| 欧美—级在线免费片| 日韩你懂的电影在线观看| 色综合婷婷久久| 粉嫩高潮美女一区二区三区 | 亚洲一区二区三区在线| 国产清纯在线一区二区www| 欧美变态凌虐bdsm| 欧美乱妇23p|