资源简介
纯代码,当年大学写的毕业设计,通俗易懂,Linux平台下直接编译可用。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#define N 5
int Client_socketfd;
char logout_name[20];
pthread_t thread_id_send;
pthread_t thread_id_recv;
typedef struct user
{
char name[20];
char password[20];
char cmd_type[20];
char chat_info[100];
}User;
User user;
typedef struct online_user_info
{
char oline_user_name[30];
int oline_user_count;
}Online_User;
Online_User online_user[N];
int _show()
{
int i;
memset((unsigned char*)&user0sizeof(User));
strcpy(user.cmd_type“SHOW“);
if(send(Client_socketfd&usersizeof(User)0) <0)
{
perror(“send error!“);
return -1;
}
printf(“-----------------------------------\n“);
printf(“online user:\n“);
for(i=0; i {
if(recv(Client_socketfd&online_user[i]sizeof(Online_User)0) < 0)
{
perror(“recv error!“);
return -1;
}
printf(“%s\n“online_user[i].oline_user_name);
if(i==online_user[i].oline_user_count-1)
break;
}
printf(“-----------------------------------\n“);
}
//发送线程
void _send()
{
char talk[100];
while(1)
{
memset(talk0100);
gets(talk);
if(strcmp(“LOGOUT“talk) == 0)
{
strcpy(user.cmd_type“LOGOUT“);
strcpy(user.namelogout_name);
if(send(Client_socketfd&usersizeof(User)0) < 0)
{
perror(“send error!“);
return;
}
printf(“\n“);
printf(“-------------------退出聊天室--------------------\n“);
printf(“\n“);
break;
}
strcpy(user.cmd_type“CHAT“);
strcpy(user.chat_infotalk);
if(send(Client_socketfd&usersizeof(User)0)<0)
{
perror(“send error!“);
return;
}
}
pthread_cancel(thread_id_recv);
zhuce_denglu();
}
//接收线程
void _recv()
{
char buff[200];
while(1)
{
memset(buff0200);
if(recv(Client_socketfdbuff2000) < 0)
{
perror(“recv error!“);
return;
}
printf(“%s\n“buff);
}
}
int chatroom()
{
char cmd[20];
memset(cmd020);
while(1)
{
scanf(“%s“cmd);
if(strcmp(cmd“SHOW“) == 0)
{
_show();
}
if(strcmp(cmd“CHAT“) == 0)
{
pthread_create(&thread_id_sendNULL(void*)_sendNULL);
pthread_create(&thread_id_recvNULL(void*)_recvNULL);
pthread_join(thread_id_sendNULL);
pthread_join(thread_id_recvNULL);
close(Client_socketfd);
}
}
}
//注册信息
int process_client_cmd_REG(char *str)
{
User user;
char buff_1[50];
memset(buff_1050);
printf(“请输入您的用户名:“);
scanf(“%s“
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-12-15 14:45 基于Linux平台的网络聊天室\
文件 7489 2012-05-31 14:27 基于Linux平台的网络聊天室\client1.c
文件 19725 2012-05-31 14:27 基于Linux平台的网络聊天室\server1.c
- 上一篇:教师业务档案管理
- 下一篇:Genericdll_1p1.exe 补丁
相关资源
- Genericdll_1p1.exe 补丁
- 基于UC3854的功率因数校正电路设计.
- cisco ASA5510配置
- TI-DSP28335-CAN中文使用手册
- VC实现从TXT文件中读取数值型数据
- 介绍了一种基于DSP芯片TMS320VC5509A 并采
- BCB多线程BCB多线程
- f1c100s keil工程.zip
- channel_v3.json亲测可用
- SCSA习题总结.docx
- VC HTTP请求 GET POST
- 黑苹果(B450M mortar max+AMD2600X+RX580)
- react后台管理项目的效果展示
- 超级房贷计算器EXCEL
- WxApkgUnpacker.exe
- 阿里云linux一键安装web环境sh-1.5.5.zi
- STM32F103C8T6核心板测试程序(RTC).ra
- 各种激光器的结构示意图 包括co2激光
- Robocup2d的官方说明书
- 许继103TCP规约解析
- TimeDynamicListDemo.rar
- au7860c.pdf
- 分账计算模板
- 免安装摄像头软件Amcap
- 基于cc2530的酒精串口显示系统
- WebApi系列-通过HttpClient来调用WebApi接口
- 模块化多电平换流器PSCAD模型
- api-ms-win-crt-conio-l1-1-0.dll文件
- 专利申请模板.doc
- 基于OPENCV的WLD特征提取程序
评论
共有 条评论