/********************************************************************************* * Copyright: (C) 2012 Guo Wenxue * All rights reserved. * * Filename: test_sock_server.c * Description: This file * * Version: 1.0.0(10/30/2012~) * Author: Guo Wenxue * ChangeLog: 1, Release initial version on "10/30/2012 01:15:18 PM" * ********************************************************************************/ #include "cp_network.h" #include "cp_logger.h" #include "cp_proc.h" #include "cp_time.h" #define SERV_PORT1 8880 #define SERV_PORT2 8881 #define DOMAIN "kkernel.oicp.net" #define IPADDR "192.168.1.78" int service_route(CP_SOCK *sock) { int rv = 0; log_nrml("Process socket [%d %s:%d] get event [%d]\n", sock->fd, sock->laddr, sock->lport, sock->event.events); if(sock->event.events & EPOLLIN) { rv = cp_sock_recv(sock); if(0==rv) { log_nrml("Socket [%d %s:%d] remote socket [%s:%d] disconnect, remove it now\n", sock->fd, sock->laddr, sock->lport, sock->raddr, sock->rport); cp_fds_destroy_sock(sock); return 0; } else if(rv > 0) { log_nrml("Socket[%d] recv buffer %d bytes data:\n", sock->fd, sock->rbuf->len); //cp_log_dump(LOG_LEVEL_NRML, sock->rbuf->data, sock->rbuf->len); cp_string_move(sock->sbuf, sock->rbuf); log_nrml("Socket[%d] send buffer %d bytes data:\n", sock->fd, sock->sbuf->len); cp_sock_send(sock); cp_string_clear_data(sock->sbuf); } } return 0; } /******************************************************************************** * Description: * Input Args: * Output Args: * Return Value: ********************************************************************************/ int main (int argc, char **argv) { CP_FDS *fds; CP_SOCK *sock; //if (!cp_log_init(NULL, DBG_LOG_FILE, LOG_LEVEL_NRML, LOG_ROLLBACK_NONE) || cp_log_open()) if (!cp_log_init(NULL, DBG_LOG_FILE, LOG_LEVEL_MAX, LOG_ROLLBACK_NONE) || cp_log_open()) goto cleanup; cp_install_proc_signal(); if( !(fds=cp_fds_init(NULL, CP_DEF_MAX_EVENTS, CP_DEF_FDS_TIMEOUT)) ) goto cleanup; if( !(sock=cp_sock_server_regist(fds, NULL, SERV_PORT1, 0, service_route, NULL)) ) goto cleanup; if( !(sock=cp_sock_server_regist(fds, NULL, SERV_PORT2, 0, service_route, NULL)) ) goto cleanup; while( !g_cp_signal.stop ) { cp_fds_detect_event(fds); cp_fds_proc_event(fds); micro_second_sleep(10); } cleanup: cp_sock_term_all_service_clear(fds); cp_log_term(); return 0; } /* ----- End of main() ----- */