資源簡介
本設計主要實現一個Linux下的局域網聊天工具的設計。該設計主要分為兩部分,客戶端部分和服務器部分。設計并實現一個簡單的聊天室程序,用戶名/密碼注冊和登錄,客戶端登陸到服務器聊天后,可以在聊天室內與其他用戶交流。
1、 能做到3個以上用戶之間的聊天;
輔助:
2 、系統要有用戶管理功能;
3、 每個用戶能管理自己的權限,比如 不接受信息,撤銷已發的信息等;可以自己發揮;
4 、聊天信息的保存,比如保存三天內的信息,或其他規定;
5 、敏感詞的過濾等等;

代碼片段和文件信息
/*?msg_client.c?*/??
#include?“msg.h“???
int?userid?=?0;
char?name[32]?=?““;
void?print_menu(void){
printf(“\t+----------------------------------+\n“);
printf(“\t+????Chat?Room?V1.0?2013.01.08?????+\n“);
printf(“\t+----------------------------------+\n“);
printf(“\t+?User?Commands?as?follows:????????+\n“);
printf(“\t+??????????????????????????????????+\n“);
printf(“\t+?l:?list?all?online?user??????????+\n“);
printf(“\t+?i:?Login?????????????????????????+\n“);
printf(“\t+?o:?logOut????????????????????????+\n“);
printf(“\t+?c:?Chat?with?other?online?user???+\n“);
printf(“\t+?a:?Chat?with?all?online?user?????+\n“);
printf(“\t+?f:?transfer?a?File?to?others?????+\n“);
printf(“\t+?h:?Help??????????????????????????+\n“);
printf(“\t+----------------------------------+\n“);
}
int?get_choice(){
printf(“%s#?“?name);
int?answer?=?getchar(); //?eat?
while(getchar()?!=?‘\n‘); //?eat?
//putchar(answer);
return?answer;
}
void?func(int?sig){
printf(“\n%s#?“?name);
fflush(stdout);
}
int?send_to(int?target?int?cmd?char?*data){
return?send_msg(target?cmd?userid?data);
}
int?send_server(int?cmd?char?*data){
return?send_msg(TYPE_SERVER?cmd?userid?data);
}
int?chat(){
if(strlen(name)?==?0){
printf(“You?are?not?login!\n“);
return?ERR;
}
char?id[32];
char?data[256];
char?buf[256];
printf(“To:?[USR_ID]?“);
fflush(stdout);
if(fgets(id?sizeof(id)?stdin)?==?NULL){
perror(“fgets“);
return?ERR;
}
sprintf(data?“?%s?>?“?name);
id[strlen(id)?-?1]?=?0;
printf(“>>?“);
fflush(stdout);
if(fgets(buf?sizeof(buf)?stdin)?==?NULL){
perror(“fgets“);
return?ERR;
}
strcat(data?buf);
data[strlen(data)?-?1]?=?0;
send_to(atoi(id)?CMD_CHAT?data);
}
int?chat_all(){
if(strlen(name)?==?0){
printf(“You?are?not?login!\n“);
return?ERR;
}
char?data[256];
char?buf[256];
sprintf(data?“?%s?To?all?>?“?name);
printf(“To?all?>>?“);
fflush(stdout);
if(fgets(buf?sizeof(buf)?stdin)?==?NULL){
perror(“fgets“);
return?ERR;
}
strcat(data?buf);
data[strlen(data)?-?1]?=?0;
send_to(TYPE_SERVER?CMD_TOALL?data);
}
int?login(){
printf(“username:?\n“);
if(fgets(name?sizeof(name)?stdin)?==?NULL){
perror(“fgets“);
return?ERR;
}
name[strlen(name)?-?1]?=?0;
int?rand_type?=?random();
time_t?t;
time(&t);
sprintf(msg_snd.buffer?“%c:%s:%ld:%d“?CMD_LOGIN?name?t?rand_type);
#ifdef?_DEBUG
printf(“%s\n“?msg_snd.buffer);
#endif
//?get?a?random?type?to?login?server
msg_snd.mtype?=?TYPE_SERVER;
if(msgsnd(msgid?&msg_snd?strlen(msg_snd.buffer)+1?0)?0){
perror(“msgsnd“);
return?ERR;
}
//?wait?server?response
if(msgrcv(msgid?&msg_rcv?sizeof(msg_rcv)?rand_type?0)?0){
return?ERR;
}?else{
userid?=?atol(msg_rcv.buffer);
printf(“Login?OK?id?=?%d\n“?userid);
return?OK;
}
}
int?logout(){
if(strlen(name)?==?0){
return?ERR;
}
send_server(CMD_LOGOUT?“Logout“);
//?wait?server?response
if(msgrcv(msgid?&msg_rcv?sizeof(msg_rcv)?userid?0)?0){
return?ERR;
}else
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-03-07?16:39??操作系統課程設計\
?????目錄???????????0??2018-03-07?16:34??操作系統課程設計\其他\
?????文件??????328192??2018-03-07?15:40??操作系統課程設計\其他\Linux下的Socket網絡編程:11.doc
?????文件??????539648??2018-03-07?15:40??操作系統課程設計\其他\Linux下的簡單聊天工具???11.doc
?????文件??????533504??2018-03-07?15:40??操作系統課程設計\其他\Linux下類似QQ聊天工具.doc
?????文件??????514560??2018-03-07?15:40??操作系統課程設計\其他\Linux網絡聊天系統.doc
?????文件??????587990??2018-03-07?15:41??操作系統課程設計\其他\Linux聊天室系統期末大作業.doc
?????文件??????783360??2018-03-07?15:41??操作系統課程設計\其他\Linux聊天程序論文.doc
?????文件?????1588224??2018-03-07?15:41??操作系統課程設計\其他\Linux課程大作業之局域網聊天系統.doc
?????文件???????13920??2018-03-07?15:41??操作系統課程設計\其他\chat.zip
?????文件?????1115548??2018-03-07?15:41??操作系統課程設計\其他\linux-下的網絡聊天室-11.doc
?????文件??????414208??2018-03-07?15:41??操作系統課程設計\其他\linux基于socket下的簡單聊天室.doc
?????文件??????438784??2018-03-07?15:41??操作系統課程設計\其他\linux聊天室報告.doc
?????目錄???????????0??2018-03-07?16:34??操作系統課程設計\其他\yybchat\
?????文件?????????159??2018-03-07?15:41??操作系統課程設計\其他\yybchat\Makefile
?????文件???????12859??2018-03-07?15:41??操作系統課程設計\其他\yybchat\client
?????文件????????2709??2018-03-07?15:41??操作系統課程設計\其他\yybchat\msg.h
?????文件????????5731??2018-03-07?15:41??操作系統課程設計\其他\yybchat\msg_client.c
?????文件????????2470??2018-03-07?15:41??操作系統課程設計\其他\yybchat\msg_svr.c
?????文件???????12331??2018-03-07?15:41??操作系統課程設計\其他\yybchat\server
?????文件??????259072??2018-03-07?15:40??操作系統課程設計\其他\基于Linux網絡聊天室的設計?(3).doc
?????文件???????93161??2018-03-07?15:40??操作系統課程設計\其他\基于Linux網絡聊天室的設計.doc
?????文件??????324859??2018-03-07?15:40??操作系統課程設計\其他\基于Linux網絡聊天室的設計3.doc
?????文件??????589312??2018-03-07?15:40??操作系統課程設計\其他\基于linux網絡聊天室的設計?(1).doc
?????文件??????469606??2018-03-07?15:40??操作系統課程設計\其他\基于linux網絡聊天室的設計?(2).doc
?????文件??????277504??2018-03-07?15:40??操作系統課程設計\其他\正文-基于linux網絡聊天室的設計.doc
?????文件??????274944??2018-03-07?16:34??操作系統課程設計\操作系統課程設計報告.doc
?????目錄???????????0??2018-03-07?16:34??操作系統課程設計\源代碼\
?????文件?????????105??2018-03-07?15:40??操作系統課程設計\源代碼\Makefile
?????文件???????10924??2018-03-07?15:40??操作系統課程設計\源代碼\client.c
?????文件?????????398??2018-03-07?15:40??操作系統課程設計\源代碼\fun.h
............此處省略3個文件信息
- 上一篇:Spire.pdf.dll
- 下一篇:STM32頻率計
評論
共有 條評論