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; } } } }
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(); }