📄 socketchat.c
字号:
/*
Version: 0.2.0(stable)
Author: Computer_xu
Email: Computer_xu@sina.com
HomePage: http://www.socketchat.com
LastModify: 2001-05-07 (yyyy-mm-dd)
*/
#include "socketchat.h"
int sockfd;
int main(int argc, char *argv[])
{
int pid;
int addrlen=sizeof(struct sockaddr_in);
struct sockaddr_in srv_addr;
PTHREAD_INFO *p;
pthread_t send_id;
int i;
FILE *fp;
printf("Starting...\n");
InitSystem();
p=sysinfo.PTHREAD_HEAD;
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
exit(1);
}
memset(&srv_addr,0,addrlen);
srv_addr.sin_family=AF_INET;
srv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
srv_addr.sin_port=htons(sysinfo.nPort);
if(bind(sockfd,(struct sockaddr *)&srv_addr,addrlen)<0)
{
perror("bind");
close(sockfd);
exit(2);
}
listen(sockfd,50);
pid=getpid();
printf("Main Process ID is %d\n",pid);
/* fp=Fopen("/var/run/schat.pid","w"); */
fp=Fopen("../schat.pid","w");
fprintf(fp,"%d",pid);
fclose(fp);
/* chroot */
printf("Change Root ... ");
if( chroot("./") )
{
perror("chroot");
exit(1);
}
printf("Ok\n");
/* 不在root权限下运行 */
/* change run id */
printf("Change Run Id from Root to Normal ... ");
setuid(getuid());
setgid(getgid());
printf("Ok\n");
/* 创建轮寻发送数据到客户端的线程 */
printf("SendData Thread Creating ...\n");
if(pthread_create(&send_id,NULL,SendData,(void*)NULL)>0)
{
perror("pthread_create");
exit(3);
}
/* 等待SendData线程一个空循环,可以去掉 */
sleep(1);
/* 创建线程 */
printf("All Threads Creating ... \n");
i=1;
while( p!=NULL )
{
/* printf("Create %d thread...",i); */
thread_make(p);
/* printf("OK\n"); */
p=p->next;
i++;
}
printf("Ok! %d threads created!\n", i-1);
/* 创建防掉线线程 */
printf("AntiTimeout Thread Creating ...\n");
if(pthread_create(&send_id,NULL,(void *)&AntiTimeout,(void*)NULL)>0)
{
perror("pthread_create");
exit(4);
}
printf("System is running...\n");
printf("Mcount = %d\n",Mcount);
signal(SIGHUP,SIG_IGN); /* re-init */
signal(SIGTERM,sig_quit); /* quit */
signal(SIGPIPE,SIG_IGN); /* connect break out */
signal(SIGCLD,SIG_IGN);
signal(SIGINT,SIG_IGN);
for(;;)
pause();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -