91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

基于linux的socket多線程通信方式。采用sqlite3數據庫存儲用戶信息. 能夠實現注冊、登陸、退出 私聊、群聊、修改密碼、查看在線用戶........

資源截圖

代碼片段和文件信息

/*************************linux多人聊天室*********************************
?*實現方式:基于linux的socket多線程通信方式。采用sqlite3數據庫存儲用戶信息
?*作者:????曹丹(Cao?Dan)@cqupt
?*完成時間: 2013/01/19
?*************************************************************************?
?*?*/
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?“display.h“
#include?“chatroom_lib.h“

#define?PORT_NUM?8765
#define?BUFF_SIZE?1024
#define?PASSWD_LEN?30
#define?USERNAME_LEN?30

void?action_log(void);??//登錄服務器
int?action_log_in(void);
void?action_register(void);
void?*pthread_read(void?*arg);
void?sigint_handler(int?signo);
void?sigpipe_handler(int?signo);
void?reset_passwd(void);

int?sockfd;??//套接字描述符
char?buffer_rcv[BUFF_SIZE]?buffer_send[BUFF_SIZE];?//接收和發送緩存區

int?main(int?argc?char?*argv[])
{
int?res?choice;

if(argc?!=?2)?{
fprintf(stderr?“Usage:?%s?server_ip\n“?argv[0]);
exit(EXIT_FAILURE);
}
signal(SIGINT?sigint_handler);
signal(SIGPIPE?sigpipe_handler);

if?(?confirm_socket_client(&sockfd?argv[1]?PORT_NUM)?==?-1)
exit(EXIT_FAILURE);

while(1)?{
display_main_menu();
puts(“Enter?your?choice:“);
scanf(“%d“&choice);
getchar();
switch(choice)?{
case?1:???//log
action_log();
if(action_log_in()?==?-1)?{
close(sockfd);
return?0;
}
break;
case?2:????//register
action_register();
break;
case?3:??
return?0;?/*log?out*/
default:
puts(“invalid?input?please?enter?again“);
break;
}?/*end?of?switch?choice?*/
}?/*end?of?while(1)*/

return?0;
}?/*end?of?main*/

/*signal?function*/
void?sigint_handler(int?signo)
{
close(sockfd);
puts(“\ncaught?signal?SIGINT.“);
puts(“socket?has?been?closed“);
//signal(SIGINT?SIG_DFL);
exit(EXIT_SUCCESS);
}

void?sigpipe_handler(int?signo)
{
puts(“\ncaught?signal?SIGPIPE.“);
puts(“error?occuredconnection?may?have?been?closed?by?server“);
exit(EXIT_FAILURE);
}

void?action_log(void)
{
char?username[USERNAME_LEN]?passwd[PASSWD_LEN];
/*pormat?is?u:username:passwd:1*/

//respons?from?server
do?{
puts(“Enter?your?username“);
scanf(“%s“username);??//get?username
getchar();
puts(“Enter?your?passwd“);
scanf(“%s“passwd);????//get?passwd
getchar();
sprintf(buffer_send?“u:%s:%s:1\0“?username?passwd);
write(sockfd?buffer_send?strlen(buffer_send));?
read(sockfd?buffer_rcv?BUFF_SIZE);
puts(buffer_rcv);
}while(?strncmp(buffer_rcv?“OK“?2)?!=?0?);

}

int?action_log_in(void)
{
pthread_t?thread_id;
void?*thread_ret;
int?n;

display_log_in_menu();
//創建線程讀取服務器數據
if(pthread_create(&thread_id?NULL?pthread_readNULL)!=0){
perror(“pthread_create“);
exit(EXIT_FAILURE);
}
while(1)?{
bzero(buffer_rcv?BUFF_SIZE);??
bzero(buffer_send?BUFF_SIZE);
get_input_option(buffer_rcv);??//獲取輸入選項
switch(buffer_rcv[0])?{
case?‘/‘:
case?‘-‘:
strcpy(buffer_send?buffer_rcv);
write(sockfd?buffer_send?BUFF_SIZE);
break;
case?‘.‘:
if(!strncmp(buffer_rcv

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-01-19?16:07??Chatroom\
?????文件???????18161??2013-01-19?16:03??Chatroom\chatroom_client
?????文件????????5211??2013-01-19?15:49??Chatroom\chatroom_client.c
?????文件????????5644??2013-01-19?16:03??Chatroom\chatroom_client.o
?????文件????????8387??2013-01-19?15:53??Chatroom\chatroom_lib.c
?????文件????????1078??2013-01-18?10:30??Chatroom\chatroom_lib.h
?????文件????????7240??2013-01-19?16:03??Chatroom\chatroom_lib.o
?????文件???????22411??2013-01-19?16:03??Chatroom\chatroom_server
?????文件????????8251??2013-01-19?15:51??Chatroom\chatroom_server.c
?????文件????????7768??2013-01-19?16:03??Chatroom\chatroom_server.o
?????文件????????1603??2013-01-19?15:52??Chatroom\display.c
?????文件?????????162??2013-01-11?13:56??Chatroom\display.h
?????文件????????2116??2013-01-19?16:03??Chatroom\display.o
?????文件??????115764??2013-01-19?16:07??Chatroom\linux多人聊天室項目總結.docx.pdf
?????文件?????????519??2013-01-19?16:03??Chatroom\Makefile
?????文件????????4969??2013-01-17?21:05??Chatroom\tags
?????文件????????3072??2013-01-18?10:55??Chatroom\user_database.db

評論

共有 條評論