Example #1
0
int main()
{
	user_handle();
	int sockfd, client_sockfd;
	socklen_t length;
	struct sockaddr_in server_addr, client_addr;
	pthread_t pthd;

	if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
	{
		perror("error: socket");
		exit(1);
	}

	int reuse = 1;
	setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(int)); //重用bind的地址

	server_addr.sin_family = AF_INET; //IPV4因特网域
	server_addr.sin_port = htons(SERVER_PORT); //设置端口号
	server_addr.sin_addr.s_addr = htonl(INADDR_ANY); //设置IP地址,接收所有网卡收到等数据包

	if((bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr))) == -1)
	{
		perror("error: bind");
		exit(1);
	}

	puts("Gchat server is running, Welcome your connect!");

	length = sizeof(struct sockaddr_in);

	while(1)
	{
		if(listen(sockfd, SOMAXCONN) == -1) //入队等未完成连接的请求数目设为SOMAXCONN
		{
		        perror("error: listen");
		        continue;
		}
		if((client_sockfd = accept(sockfd, (struct sockaddr *) &client_addr, &length))  == -1)
		{
			perror("error: accept");
			continue;
		}
		else
		{
			if(pthread_create(&pthd, NULL, (void *)gif_handle_client, (void *)(&client_sockfd)) != 0)
                        {
                                perror("error: pthread_create");
                                continue;
                        }
			if(pthread_detach(pthd) != 0)
                        {
                                perror("error: pthread_detach");
                                continue;
                        }
		}
	}
}
Example #2
0
File: user.c Project: erukiti/ma
SHELL	void	user_disp()
{
	char	buf[LN_buf+1];
	uint	a,i;

	sprt(buf,lpu(user.number,-4)," [",user_id(),"]",NULL);
	lo_line(buf);

	prt("ハンドル "DC_norm ,user_handle(),"\n",NULL);
	prt("端末     "DC_norm ,
		isonekey()?"ワンキー入力":"ライン入力","\n",NULL);

	i=atol(getvar("lastlog",user.var))!=0;
	if (i)
		{
		 prt("コネクト "DC_norm ,ch.result,"\n",NULL);
		 prt("経過時間 "DC_norm ,strptime(timer_pas(ch.pass)),"。"
		 "活動限界まで",strptime(ch.limit-timer_pas(ch.pass)),"です。\n",NULL);
		}
	if (user.number>0)
		{
		 if (i)
		 	{
		 	 prt("ログイン "DC_norm 
		 	 						,stredatime(ch.login),"\n",NULL);

			 a=ulist_getmpost(user.number);
			 prt("ポスト数 "DC_norm "(今月)",lpu(a,0),"/(全体)"
			 	,lpu(ulist_getpost(user.number)+a,0),"\n",NULL);

			 a=ulist_getmlogin(user.number);
			 prt("ログイン "DC_norm "(今月)",lpu(a,0),"/(全体)"
			 	,lpu(ulist_getlogin(user.number)+a,0),"\n",NULL);
			}

		 lo_line2();
		 prt("氏名     "DC_norm ,getvar("name",user.var),"\n",NULL);
		 prt("住所     "DC_norm ,getvar("adrs",user.var),"\n",NULL);
		 prt("電話番号 "DC_norm ,getvar("tel",user.var),"\n",NULL);
		 prt("誕生日   "DC_norm ,getvar("birth",user.var),"\n",NULL);

		 lo_line2();
		 prof_myview();
		}
	lo_line1();
}