资源简介
本设计主要实现一个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频率计
相关资源
- linux内核分析及各个版本kernel源码地址
- 老男孩Linux运维笔记--高清完整文字版
- Linux 0.11内核完全解析(含源码)
- Linux教程第四版孟庆昌牛欣源
- Linux 环境下,利用 Socket 通信实现网络
- 飞思卡尔 明远智睿 I.MX6核心板 I.MX6开
- UNIX-Linux系统管理技术手册(第四版)
- see mips run(英文版本)
- SELinux详解中文版
- 国嵌嵌入式linux培训全套实验代码
- SSH The Secure Shell 2nd Edition
- u-boot2017.01启动过程分析.pdf
- linux下关于Qt界面的摄像头v4l2操作源码
- Linux性能和调优指南
- sx1301全频道源码及配置文件
- Linux版本的aapt和apktool工具包
- Linux餐厅点菜系统
- Linux内核设计与实现(原书第3版) 清
- 操作系统实验多线程读者写者优先问
- 基于Linux、QT的视频监控系统的设计与
- Win32多线程程序设计.侯捷.超清完美版
- 文泉驿中英文字体库支持qt4和qt5
- Linux进程线程编程
- rtai+linux实时系统
- qt-recordDesktop
- openssl-1.0.0o.tar.gz
- linux下系统调用编程
- linux版本tomcat8.5
- Linux Kernel Development第三版
- Linux Device Driver 中文版第三版 pdf
评论
共有 条评论