⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ra.cpp

📁 linux下的一个多线程服务器框架,可直接应用此框架开发一个支持大用户量的UDP应用服务器
💻 CPP
字号:
#include "CSysobj.h"#include "CUdpsocket.h"#include <pthread.h>#include <mysql/mysql.h>CSysobj ptrsys;CUdpsocket ptrudp;MYSQL mysql;pthread_mutex_t mutex;int mysqlerror;void* thread(void* j);void reconnectmysql();int isAddrPublic(const char *ipaddr);int main(){u_char sstr[256];pthread_t id;int ret,i;int j=0;pid_t pid;mysqlerror=0;for (i = 0; i < 32; i++)	if (i != SIGKILL && i != SIGBUS && i != SIGALRM)		signal (i, SIG_IGN);/*if((pid=fork()) == -1) {	printf("Fork Error\n");	exit(0);} if(pid)  	exit(0); //parent process exit	*/ptrsys.init_eb_table();ptrudp.setServIP(ptrsys.getServAddr(0),ptrsys.getServPort(0));ptrudp.createsocket();if (!mysql_init (&mysql)){		ptrsys.write_log((u_char*)"init mysql Error");	exit(0);}if (!mysql_real_connect	(&mysql,(char*)ptrsys.getSqlAddr(0),(char*)ptrsys.getSqlUser(0),		(char*)ptrsys.getSqlPass(0),(char*)ptrsys.getSqldbname(0), 0, NULL, 0)){	sprintf((char*)sstr,"Failed to connect database: %s",(char*)mysql_error(&mysql));	ptrsys.write_log(sstr);	exit(0);}pthread_mutex_init (&mutex,NULL);while(1){	if(mysqlerror)	{		pthread_mutex_lock (&mutex);			mysqlerror=0;		pthread_mutex_unlock (&mutex);	}	if(ptrsys.waitesem()==0)		continue;	if(pthread_create(&id,NULL,thread,(void *)&j))	{		ptrsys.write_log((u_char*)"create thread error");		exit(0);	}}}void* thread(void* arg){int k,len;int i,a,b,m;char sql[256];char str[128];char recvaddr[24];char tmpaddr[24];CONNECT_TYPE contype; int num,tmp;u_char ndata[MAXSIZE];	MYSQL_ROW m_row;MYSQL_RES *m_res;CPackage ptrpkg;k=*(int*)arg;while(1){	sprintf(str,"the latest fork_num is %d,    k is %d",ptrsys.getForknum(),k);	ptrsys.write_log((u_char *)str);	memset(ndata,'\0',MAXSIZE);	if(!k)		k=1;	else		ptrsys.addsem(0);	len=0;	len=ptrudp.mrecv(ndata,recvaddr);	ptrsys.decsem(0);	//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -