selfcare init
This commit is contained in:
53
proxy_c/pstn_cli/Makefile
Normal file
53
proxy_c/pstn_cli/Makefile
Normal file
@@ -0,0 +1,53 @@
|
||||
|
||||
MODULE = pstncli
|
||||
TYPE = plat
|
||||
|
||||
DBUG_FLAGS_ADD =
|
||||
RELS_FLAGS_ADD =
|
||||
|
||||
##Default commonly as below
|
||||
|
||||
BUILD = lib
|
||||
CFG = debug
|
||||
|
||||
|
||||
PLT_LIB = -DDEBUG
|
||||
|
||||
APP_LIB =
|
||||
LIB_ADD =
|
||||
|
||||
SRC_PATH = ./src
|
||||
INC_PATH = ./src/include
|
||||
PLT_PATH = ../../plat
|
||||
APP_PATH = ../../mss
|
||||
|
||||
OBJ_ADD =
|
||||
TEST_OBJ_PATH =
|
||||
|
||||
PREPROC_CMD =
|
||||
POSTPROC_CMD =
|
||||
|
||||
##---------------------------------------------------------------------##
|
||||
##--------------------------------------
|
||||
##
|
||||
## Make configuration(Customer define)
|
||||
##
|
||||
##--------------------------------------
|
||||
|
||||
## CCFLAG_SWITCH = on/off => gcc flag show on/off
|
||||
## COVER_NEED = yes/no => PTF cover report needed
|
||||
## COVER_REPORT_PATH = [path ] => PTF cover report path
|
||||
|
||||
CCFLAG_SWITCH = off
|
||||
COVER_NEED = no
|
||||
COVER_REPORT_PATH = ./output
|
||||
|
||||
##---------------------------------------------------------------------##
|
||||
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## include makefile.rules (Do not change)
|
||||
##
|
||||
##--------------------------------------
|
||||
include ./scripts/Makefile.rules
|
||||
342
proxy_c/pstn_cli/scripts/Makefile.rules
Normal file
342
proxy_c/pstn_cli/scripts/Makefile.rules
Normal file
@@ -0,0 +1,342 @@
|
||||
|
||||
##----------------------------------------------------------##
|
||||
## ##
|
||||
## Universal Makefile Rules ##
|
||||
## ##
|
||||
## Created : Wei Liu 07/03/07 ##
|
||||
## Revision: [Last]Wei Liu 07/07/07 ##
|
||||
## ##
|
||||
##----------------------------------------------------------##
|
||||
|
||||
|
||||
UMAKE_VERSION := V2.0
|
||||
|
||||
##-------------------------------------
|
||||
##
|
||||
## Work Directory : /usr/local/include
|
||||
## Default Target : all
|
||||
##
|
||||
##-------------------------------------
|
||||
default: all
|
||||
.PHONY: all clean rebuild test indent splint doc \
|
||||
dir config check bk lsbk rmbk unzip umakever usage\
|
||||
FORCE
|
||||
.SUFFIXES:
|
||||
|
||||
umakever:
|
||||
@echo "Universal Makefile (UMake) Version: $(UMAKE_VERSION)"
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## Makefile CFG defination check
|
||||
##
|
||||
##--------------------------------------
|
||||
|
||||
ifeq "$(MODULE)" ""
|
||||
$(error Please input the module name (MODULE = )in makefile. )
|
||||
endif
|
||||
|
||||
ifeq "$(CFG)" ""
|
||||
CFG=debug
|
||||
$(warnning No configuration specified for CFG. Defaulting to $(MODULE) - debug. )
|
||||
endif
|
||||
|
||||
ifeq "$(BUILD)" ""
|
||||
BUILD=lib
|
||||
$(warnning No configuration specified for BUILD. Defaulting to create lib$(MODULE).a. )
|
||||
endif
|
||||
|
||||
ifeq "$(SRC_PATH)" ""
|
||||
SRC_PATH=.
|
||||
$(warnning No configuration specified for SRC_PATH. Defaulting to ./. )
|
||||
endif
|
||||
|
||||
COVER_NEED ?= no
|
||||
PLT_PATH ?= ../../plat
|
||||
APP_PATH ?= ../../app
|
||||
TYPE ?= plat
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## Gcc Flag for debug or release
|
||||
##
|
||||
##--------------------------------------
|
||||
CC := gcc
|
||||
GCC_CFLAGS := -Wall -MM
|
||||
AR_LINK := ar -r
|
||||
|
||||
RELS_FLAGS_ADD += -DNDEBUG
|
||||
RELEASE_CFLAGS += -g -Wall -I. $(RELS_FLAGS_ADD) -I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient
|
||||
RELEASE_LINK_CFLAGS = -g $(RELS_FLAGS_ADD) -o
|
||||
DEBUG_CFLAGS += -g -Wall -rdynamic -DDEBUG -I. $(DBUG_FLAGS_ADD) -I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient -I/usr/include/openssl
|
||||
DEBUG_LINK_CFLAGS = -g -rdynamic -DDEBUG -o
|
||||
|
||||
ifeq "$(COVER_NEED)" "yes"
|
||||
DEBUG_CFLAGS += -fprofile-arcs -ftest-coverage -pg
|
||||
endif
|
||||
|
||||
GCC_CFLAGS=$(DEBUG_CFLAGS)
|
||||
GCC_LINK_CFLAGS=$(DEBUG_LINK_CFLAGS)
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## Project setting
|
||||
##
|
||||
##--------------------------------------
|
||||
OBJDIR:=./obj
|
||||
LIBDIR:=./lib
|
||||
UTDIR :=./ut
|
||||
DOCDIR:=./doc
|
||||
DIRBUILD=$(OBJDIR)
|
||||
|
||||
ifeq "$(BUILD)" "lib"
|
||||
BINDIR:=./bin
|
||||
OUTFILE=$(LIBDIR)/lib$(MODULE).a
|
||||
DIRNEED=$(UTDIR) $(DOCDIR)
|
||||
DIRBUILD+=$(LIBDIR)
|
||||
else
|
||||
BINDIR:=.
|
||||
OUTFILE=$(BINDIR)/$(MODULE)
|
||||
DIRNEED=
|
||||
DIRBUILD+=$(BINDIR)
|
||||
endif
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## source , object and dependencies files
|
||||
##
|
||||
##--------------------------------------
|
||||
|
||||
SRC_SUBDIR := $(shell find $(SRC_PATH) -type d)
|
||||
|
||||
vpath %.c $(SRC_SUBDIR)
|
||||
vpath %.o $(OBJDIR)
|
||||
vpath %.d $(OBJDIR)
|
||||
|
||||
SRC_FULL_PATH = $(foreach dir,$(SRC_SUBDIR),$(wildcard $(dir)/*.c))
|
||||
SRC_FILES = $(foreach file, $(notdir $(SRC_FULL_PATH)) ,$(OBJDIR)/$(file))
|
||||
COMMON_OBJ = $(SRC_FILES:%.c=%.o)
|
||||
|
||||
TEST_OBJ_PATH ?= ../../obj
|
||||
|
||||
TEST_OBJ = $(foreach dir,$(TEST_OBJ_PATH),$(wildcard $(dir)/*.o))
|
||||
|
||||
OBJ=$(COMMON_OBJ) $(OBJ_ADD)
|
||||
ALL_OBJ := $(OBJ) $(TEST_OBJ)
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## Lib setting
|
||||
##
|
||||
##--------------------------------------
|
||||
|
||||
ifeq "$(COVER_NEED)" "yes"
|
||||
LIBCOVER=-lgcov
|
||||
endif
|
||||
|
||||
MODULE_PLT_LIB=$(foreach lib,$(PLT_LIB), -L$(PLT_PATH)/$(lib)/lib/ -l$(lib) )
|
||||
MODULE_PLT_LIB+=-lm
|
||||
|
||||
|
||||
MODULE_APP_LIB=$(foreach lib,$(APP_LIB),-L$(APP_PATH)/$(lib)/lib -l$(lib))
|
||||
|
||||
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## Rules
|
||||
##
|
||||
##--------------------------------------
|
||||
CCFLAG_SWITCH ?= off
|
||||
CC_COMPILE =$(CC) $(GCC_CFLAGS) -c $< -o $@
|
||||
CC_PRG_LINK=$(CC) $(GCC_LINK_CFLAGS) $(OUTFILE) $(ALL_OBJ) $(LIBCOVER) $(MODULE_APP_LIB) $(MODULE_PLT_LIB) $(LIB_ADD)
|
||||
CC_LIB_LINK=$(AR_LINK) $(OUTFILE) $(ALL_OBJ)
|
||||
|
||||
COMPILE=$(CC_COMPILE)
|
||||
PRG_LINK=$(CC_PRG_LINK)
|
||||
LIB_LINK=$(CC_LIB_LINK)
|
||||
|
||||
ifeq "$(BUILD)" "exef"
|
||||
LINK=$(PRG_LINK)
|
||||
else
|
||||
LINK=$(LIB_LINK)
|
||||
endif
|
||||
|
||||
# Build rules
|
||||
|
||||
all: preproc start dir $(ALL_OBJ) #prtdebug
|
||||
@echo Linking :$(OUTFILE)
|
||||
ifeq "$(CCFLAG_SWITCH)" "off"
|
||||
@$(LINK)
|
||||
else
|
||||
$(LINK)
|
||||
endif
|
||||
@$(POSTPROC_CMD)
|
||||
@echo -e "\n================================================================================\n"
|
||||
|
||||
sinclude $(DEPENDS)
|
||||
|
||||
release : CC_COMPILE =$(CC) $(RELEASE_CFLAGS) -c $< -o $@
|
||||
release : CC_PRG_LINK=$(CC) $(RELEASE_LINK_CFLAGS) $(OUTFILE) $(ALL_OBJ) $(MODULE_APP_LIB) $(MODULE_PLT_LIB) $(LIB_ADD)
|
||||
release : all
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## Make command to use for dependencies
|
||||
##
|
||||
##--------------------------------------
|
||||
|
||||
MAKE :=make
|
||||
RM :=rm
|
||||
MKDIR :=mkdir
|
||||
|
||||
preproc:
|
||||
@$(PREPROC_CMD)
|
||||
|
||||
start:
|
||||
@echo -e "\n================================================================================\n"
|
||||
@echo "[Building Project]: $(notdir $(MODULE))"
|
||||
ifeq "$(CCFLAG_SWITCH)" "off"
|
||||
@echo "Show Gcc Flags switch = OFF"
|
||||
endif
|
||||
|
||||
prtdebug:
|
||||
@echo "$(MODULE)-$(BUILD)[$(CFG)] build source file:" "$(SRC_FULL_PATH)"
|
||||
@echo SRC_SUBDIR: $(SRC_SUBDIR)
|
||||
@echo SRC_FULL_PATH : $(SRC_FULL_PATH)
|
||||
@echo SRC_FILES : $(SRC_FILES)
|
||||
@echo ALL_OBJ : $(ALL_OBJ)
|
||||
@echo LIB:$(MODULE_PLT_LIB)
|
||||
@echo PLT_LIB: $(PLT_LIB)
|
||||
@echo CCFLAG_SWITCH :$(CCFLAG_SWITCH)
|
||||
|
||||
config: dir
|
||||
|
||||
dir:
|
||||
@$(foreach dir,$(DIRNEED),$(MKDIR) -p $(DIRNEED) --mode=0777; )
|
||||
@$(foreach dir,$(DIRBUILD),$(MKDIR) -p $(dir) --mode=0777; )
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## Make Rebuild and clean
|
||||
##
|
||||
##--------------------------------------
|
||||
|
||||
ifneq "$(PROJ)" ""
|
||||
FRIEND_PROJ := $(shell )
|
||||
endif
|
||||
|
||||
jumprebuild:
|
||||
ifneq "$(PROJ)" ""
|
||||
@cd $(FRIEND_PROJ); mak rebuild ; cd -
|
||||
endif
|
||||
|
||||
# Rebuild this project
|
||||
rebuild: jumprebuild cleanall all
|
||||
|
||||
# Clean this project and all dependencies
|
||||
cleanall: clean
|
||||
|
||||
# Clean this project
|
||||
clean:
|
||||
@echo -e "||--------------------------------------------------------------- "
|
||||
@echo -e "|| Umake clean gcc , lcov, doxygen generated and temporary files. "
|
||||
@echo -e "||--------------------------------------------------------------- "
|
||||
@$(RM) -rf $(OBJDIR) $(OUTFILE) $(COVER_REPORT_PATH) ./doc/doxygen.conf ./doc/html ./doc/latex ./doc/rtf $(foreach dir,$(SRC_SUBDIR),$(dir)/*~)
|
||||
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## indent Makefile.indent
|
||||
##
|
||||
##--------------------------------------
|
||||
include Makefile.indent
|
||||
|
||||
indent:
|
||||
@chmod 777 $(SRC_FULL_PATH)
|
||||
@echo ===================================Indent START=================================
|
||||
@echo
|
||||
@echo "[Indent source file ]: $(SRC_FULL_PATH)"
|
||||
$(call MAKE_INDENT , $(SRC_FULL_PATH))
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## splint makefile.splint
|
||||
##
|
||||
##--------------------------------------
|
||||
include Makefile.splint
|
||||
|
||||
SPLINT_FLAG_SWITCH ?= off
|
||||
|
||||
splint:
|
||||
@chmod 777 $(SRC_FULL_PATH)
|
||||
@echo =================================Splint START==================================
|
||||
@echo
|
||||
ifeq "$(SPLINT_FLAG_SWITCH)" "on"
|
||||
@echo "[Splint flags ]: $(SPLINT_FLAGS)"
|
||||
endif
|
||||
@echo "[Lint Clean Project]: $(notdir $(MODULE))"
|
||||
$(call MAKE_SPLINT, $(SRC_FULL_PATH))
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## doc Makefile.doxygen
|
||||
##
|
||||
##--------------------------------------
|
||||
include Makefile.doxygen
|
||||
|
||||
doc:
|
||||
@chmod 777 $(SRC_FULL_PATH)
|
||||
@echo ==================================Doxygen START=================================
|
||||
@echo
|
||||
$(call MAKE_DOC, $(SRC_FULL_PATH))
|
||||
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## backup Makefile.backup
|
||||
##
|
||||
##--------------------------------------
|
||||
include Makefile.backup
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## cov Makefile.cov
|
||||
##
|
||||
##--------------------------------------
|
||||
include Makefile.cov
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## usage Makefile.usage
|
||||
##
|
||||
##--------------------------------------
|
||||
include Makefile.usage
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## Make dependencies
|
||||
##
|
||||
##--------------------------------------
|
||||
|
||||
$(OBJDIR)/%.d:%.c
|
||||
@$(CC) $< -MM -MD -o $@
|
||||
|
||||
$(OBJDIR)/%.o:%.c
|
||||
|
||||
ifeq "$(CCFLAG_SWITCH)" "off"
|
||||
@echo -e "building: $(notdir $@) \t\t\t\t please wait ..."
|
||||
@$(COMPILE)
|
||||
else
|
||||
$(COMPILE)
|
||||
endif
|
||||
|
||||
DEPENDS=$(COMMON_OBJ:.o=.d)
|
||||
|
||||
##--------------------------------------
|
||||
##
|
||||
## Make force
|
||||
##
|
||||
##--------------------------------------
|
||||
FORCE:
|
||||
|
||||
199
proxy_c/pstn_cli/src/include/pstn_client.h
Normal file
199
proxy_c/pstn_cli/src/include/pstn_client.h
Normal file
@@ -0,0 +1,199 @@
|
||||
#ifndef _PSTN_CLIENT_H
|
||||
#define _PSTN_CLIENT_H
|
||||
|
||||
#define MAX_COMMAND_LEN 2048
|
||||
#define MAX_PSTN_PROCS 8
|
||||
#define MSG_TIMER 6000
|
||||
#define MSG_WAIT_TIMER 400
|
||||
#define MSG_WAIT_LTIMER 1600
|
||||
|
||||
#define MAX_SLOTS 100
|
||||
|
||||
|
||||
typedef struct msan_param_t
|
||||
{
|
||||
u_char server_enable;
|
||||
char server_ip[16];
|
||||
u_short server_port;
|
||||
char user_name[16];
|
||||
char password[16];
|
||||
}_msan_param_t;
|
||||
|
||||
typedef struct pair_2_slot_param_t
|
||||
{
|
||||
int used;
|
||||
int pair_group; /* every 64 pairs is a group */
|
||||
int msan_id; /*1/2 */
|
||||
int slot_id; /* paris are mapped to : slot+port */
|
||||
}_pair_2_slot_param_t;
|
||||
|
||||
typedef struct pstn_server_param_t
|
||||
{
|
||||
char local_ip[16];
|
||||
u_short local_port;
|
||||
u_char server_enable;
|
||||
char server_ip[16];
|
||||
u_short server_port;
|
||||
char user_name[16];
|
||||
char password[16];
|
||||
|
||||
int krone_pair_id_in_crm;
|
||||
int ss_entry_id_in_crm;
|
||||
|
||||
_msan_param_t msan[2];
|
||||
_pair_2_slot_param_t pair_slot_info[MAX_SLOTS];
|
||||
|
||||
}_pstn_server_param_t;
|
||||
|
||||
typedef enum PORT_STATE
|
||||
{
|
||||
PS_NULL,
|
||||
PS_CREATE,
|
||||
PS_UPDATE,
|
||||
PS_DELETE,
|
||||
PS_BAR_OUT,
|
||||
PS_UNBAR_OUT,
|
||||
PS_BAR_IN,
|
||||
PS_UNBAR_IN,
|
||||
PS_CREATE_MSAN,
|
||||
PS_DELETE_MSAN,
|
||||
PS_RELEASE,
|
||||
}_PORT_STATE;
|
||||
|
||||
typedef enum PORT_CRT_STATE
|
||||
{
|
||||
PCS_NULL,
|
||||
PCS_INIT,
|
||||
PCS_ECHO,
|
||||
PCS_LOGIN,
|
||||
PCS_PSSWD,
|
||||
PCS_NOGUI,
|
||||
PCS_QUERY_DSTN,
|
||||
PCS_ENTRY,
|
||||
PCS_STATION,
|
||||
PCS_DSTN,
|
||||
PCS_NAME,
|
||||
PCS_SIGNAL,
|
||||
PCS_SIP_USER,
|
||||
PCS_VOIP_GRP,
|
||||
PCS_TOLL,
|
||||
PCS_EXTI,
|
||||
PCS_ACTIVE,
|
||||
PCS_LOGOUT,
|
||||
PCS_LOGOUT_AGAIN,
|
||||
PCS_TRANS_TO_MSAN,
|
||||
// PCS_ENTRY,
|
||||
// PCS_VOIP_GRP,
|
||||
|
||||
PCS_MAX,
|
||||
}_PORT_CRT_STATE;
|
||||
|
||||
typedef enum PORT_UPDATE_STATE
|
||||
{
|
||||
PUS_NULL,
|
||||
PUS_INIT,
|
||||
PUS_LOGIN,
|
||||
PUS_PSSWD,
|
||||
PUS_NOGUI,
|
||||
PUS_DSTN,
|
||||
PUS_TOLL,
|
||||
PUS_LOCKI,
|
||||
PUS_EXTI,
|
||||
PUS_ACTIVATE,
|
||||
PUS_LOGOUT,
|
||||
PUS_MAX,
|
||||
}_PORT_UPDATE_STATE;
|
||||
|
||||
typedef enum PORT_DEL_STATE
|
||||
{
|
||||
PDS_NULL,
|
||||
PDS_INIT,
|
||||
PDS_LOGIN,
|
||||
PDS_PSSWD,
|
||||
PDS_NOGUI,
|
||||
PDS_DSTN,
|
||||
PDS_ENTRY,
|
||||
PDS_DEL,
|
||||
PDS_EXTI,
|
||||
PDS_LOGOUT,
|
||||
PDS_LOGOUT_AGAIN,
|
||||
PDS_MAX,
|
||||
}_PORT_DEL_STATE;
|
||||
|
||||
|
||||
typedef enum MSAN_CRT_STATE
|
||||
{
|
||||
MCS_NULL,
|
||||
MCS_INIT,
|
||||
MCS_ECHO,
|
||||
MCS_LOGIN,
|
||||
MCS_PSSWD,
|
||||
MCS_CREATE,
|
||||
MCS_BRING_UP,
|
||||
MCS_SAVE,
|
||||
MCS_EXIT,
|
||||
MCS_WAIT_EXIT,
|
||||
MCS_MAX,
|
||||
}_MSAN_CRT_STATE;
|
||||
|
||||
typedef enum MSAN_DEL_STATE
|
||||
{
|
||||
MDS_NULL,
|
||||
MDS_INIT,
|
||||
MDS_LOGIN,
|
||||
MDS_PSSWD,
|
||||
MDS_DELETE,
|
||||
MDS_BRING_DOWN,
|
||||
MDS_SAVE,
|
||||
MDS_LOGOUT,
|
||||
MDS_MAX,
|
||||
}_MSAN_DEL_STATE;
|
||||
|
||||
|
||||
|
||||
typedef enum PSTN_PROV_CMD
|
||||
{
|
||||
PC_NULL,
|
||||
PC_CREATE,
|
||||
PC_UPDATE,
|
||||
PC_DELETE,
|
||||
PC_BAR,
|
||||
PC_UNBAR,
|
||||
}_PSTN_PROV_CMD;
|
||||
|
||||
typedef struct pstn_prov_t
|
||||
{
|
||||
int command;
|
||||
long pre_id;
|
||||
char isdn_number[16];
|
||||
char user_name[64];
|
||||
int ss_entry;
|
||||
int krone_pair_id;
|
||||
int msan_id;
|
||||
int msan_slot_id;
|
||||
int msan_slot_port_id;
|
||||
int update_status;
|
||||
}_pstn_prov_t;
|
||||
|
||||
typedef struct pstn_proc_t
|
||||
{
|
||||
char flag;
|
||||
int id;
|
||||
int tcp_port_id;
|
||||
int state;
|
||||
int sub_state;
|
||||
int timer;
|
||||
int dstn_entry;
|
||||
int recv_msg_flag;
|
||||
int msg_len;
|
||||
char recv_msg[MAX_COMMAND_LEN];
|
||||
_pstn_prov_t prov;
|
||||
}_pstn_proc_t;
|
||||
|
||||
|
||||
typedef struct pstn_procs_t
|
||||
{
|
||||
_pstn_proc_t procs[MAX_PSTN_PROCS];
|
||||
}_pstn_procs_t;
|
||||
|
||||
#endif
|
||||
1174
proxy_c/pstn_cli/src/pstn_client.c
Normal file
1174
proxy_c/pstn_cli/src/pstn_client.c
Normal file
File diff suppressed because it is too large
Load Diff
133
proxy_c/pstn_cli/src/tcp_client.c
Normal file
133
proxy_c/pstn_cli/src/tcp_client.c
Normal file
@@ -0,0 +1,133 @@
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <stdio.h>
|
||||
#include <malloc.h>
|
||||
#include <netdb.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#define BUF_SIZE 1024
|
||||
|
||||
#define RES_LENGTH 10240
|
||||
|
||||
static int client_fd=0;
|
||||
static int client_connect_flag = -1;
|
||||
static char server_ip[16];
|
||||
static short server_port;
|
||||
|
||||
int connect_socket(char * server,int serverPort);
|
||||
int send_msg(int sockfd,char * sendBuff);
|
||||
char * recv_msg(int sockfd);
|
||||
int close_socket(int sockfd);
|
||||
|
||||
int init_socketfd()
|
||||
{
|
||||
int sockfd = -1;
|
||||
|
||||
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0){
|
||||
herror("Init socket error!");
|
||||
}
|
||||
|
||||
return sockfd;
|
||||
}
|
||||
|
||||
void tcp_init_client_fd()
|
||||
{
|
||||
client_fd = init_socketfd();
|
||||
|
||||
}
|
||||
|
||||
void tcp_connect_server(char *ip, u_short port)
|
||||
{
|
||||
tcp_init_client_fd();
|
||||
|
||||
strcpy(server_ip, ip);
|
||||
server_port = port;
|
||||
client_connect_flag = connect_socket(ip, port);
|
||||
}
|
||||
|
||||
int is_tcp_connected()
|
||||
{
|
||||
return client_connect_flag;
|
||||
}
|
||||
|
||||
/* * ********************************************************/
|
||||
int connect_socket(char * server,int serverPort)
|
||||
{
|
||||
struct sockaddr_in addr;
|
||||
struct hostent * phost;
|
||||
|
||||
bzero(&addr,sizeof(addr));
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_port = htons(serverPort);
|
||||
addr.sin_addr.s_addr = inet_addr(server);
|
||||
|
||||
if(addr.sin_addr.s_addr == INADDR_NONE){
|
||||
phost = (struct hostent*)gethostbyname(server);
|
||||
if(phost==NULL){
|
||||
herror("Init socket s_addr error!");
|
||||
return -1;
|
||||
}
|
||||
addr.sin_addr.s_addr =((struct in_addr*)phost->h_addr)->s_addr;
|
||||
}
|
||||
if(connect(client_fd,(struct sockaddr*)&addr, sizeof(addr))<0)
|
||||
{
|
||||
// perror("Connect server fail!");
|
||||
return -1; //0<><30>ʾ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>-1<><31>ʾʧ<CABE><CAA7>
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int tcp_send_msg( u_char *sendbuf, short len)
|
||||
{
|
||||
int sendSize=0;
|
||||
|
||||
if((sendSize=send(client_fd,sendbuf,len,MSG_NOSIGNAL))<=0){
|
||||
close_socket(client_fd);
|
||||
herror("Send msg error!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return sendSize;
|
||||
}
|
||||
|
||||
int tcp_recv_msg(u_char *recvbuf)
|
||||
{
|
||||
int recLenth=0;
|
||||
|
||||
if(( recLenth=recv(client_fd,recvbuf, BUF_SIZE,0))==-1 )
|
||||
{
|
||||
close_socket(client_fd);
|
||||
return -1;
|
||||
}
|
||||
if( recLenth>0)
|
||||
recvbuf[recLenth] = 0;
|
||||
return recLenth;
|
||||
}
|
||||
|
||||
int tcp_check_connection()
|
||||
{
|
||||
//if(client_connect_flag == -1)
|
||||
// connect_socket(server_ip, server_port);
|
||||
|
||||
return client_connect_flag;
|
||||
}
|
||||
|
||||
/**************************************************
|
||||
*<2A>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
|
||||
* **********************************************/
|
||||
int close_socket(int sockfd)
|
||||
{
|
||||
client_connect_flag = -1;
|
||||
close(sockfd);
|
||||
|
||||
smcli_connection_is_broken();
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user