/*在此只付上头文件,如需要去我的资源下载。

http://download.csdn.net/detail/ta893115871/4322905

O(∩_∩)O谢谢

暂时实现的功能有:

1.群聊

2.私聊

3.登陆验证

4.注册

5.所用的在线用户

6.退出

7.管理员踢出某用户

8.管理员禁止某用户聊天

9.管理员提升某用户为管理员

10.管理员把某用户降为普通用户

*/

/*Author QQ:       893115871
Author Email:gfj19900401@163.com头文件,函数声明和宏定义 */
#ifndef CHAT_H
#define CHAT_H#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<sys/socket.h>
//#include<linux/in.h>
#include<arpa/inet.h>
#include<pthread.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<signal.h>
#include<time.h>   //for asctime() and time()
#include<ctype.h>    //for ispunct()#define QUEUELEN     100  //max of  client
#define BUF_SIZE     256
//#define IP        "127.0.0.1"
#define IP          "192.168.1.101"   //remote ip
#define PORT         1234             // port
#define FILENAME     "userinfo"       // file name for save users info(name:passwd:id:authority)
#define CLIENT_ID    1000    // client id
//========================functions================================================
#define PUBLIC_CHAT           1  //群聊
#define PRIVATE_CHAT          2  //私聊
#define CLIENT_LOGIN          3  //登陆验证
#define CLIENT_REGISTER       4  //注册
#define CLIENT_ONLINE         5  //所用的在线用户
#define CLIENT_EXIT           6  //退出
#define ADMIN_KICK_CLIENT       7  //管理员踢出某用户
#define ADMIN_SHUTUP_CLIENT     8  //管理员禁止某用户聊天
#define ADVANCED_CLIENT_TO_ADMIN   9  //管理员提升某用户为管理员
#define DROP_CLIENT_TO_NORMAL    10  //管理员把某用户降为普通用户//====================================================================
#define NORMAL_USER_LOGIN_FAILED      0 //普通用户登录失败
#define NORMAL_USER_LOGIN_SUCCESS     1 //普通用户登录成功
#define NORMAL_USER_LOGIN_FAILED_ONLINE  2 //普通用户已经在线
#define ADMIN_LOGIN_SUCCESS              3 //管理员登录成功
#define NORMAL_USER_LOGIN_PASSWD_ERROR   4 //普通用户登录密码错误#define REGIST_FALIED   0   //注册失败
#define REGIST_EXITED   1   //注册的用户已经存在
#define NORMAL_USER     0   //普通用户
#define ADMIN_USER      1   //管理员// ===========client attr==========================================
typedef struct{pthread_t tid;     //线程的描述符int  sockfd;       //accept的返回的客户端的新的套接字描述符char client_name[25];  // 账号char client_passwd[25]; //密码int client_id;     //用户IDint is_online;     // 在线状态 1 在线 0 不在线int admin;              //用户权限,1为管理员,0为普通用户
}client_info;
client_info clients[QUEUELEN];//===========客户发送的数据结构=====================================typedef struct send_info{int  type;      //类型char id[25];      //对方idchar buf[BUF_SIZE];  //内容char name[25];    //用户名(昵称)char passwd[25];   //密码}send_info;
//================函数功能的协议====================================
typedef struct {int  fun_flag; //function flagvoid (*fun)();// function pointer variable
}proto;
//====================debug============================#define CHAT_DEBUG
#ifdef  CHAT_DEBUG
#define DEBUG(message...) fprintf(stderr, message)
#else
#define DEBUG(message...)
#endif// ========fun=========client.c====================
void  print_err(char *msg);
void  reg_log();
void  register_client();
void  login();
void  init_conn();
void  writefun();
void  show_menu();
void  wait_minutes();
void  signHandler(int signNo);//  ======fun=======server.c======================
int   system_init();
void   connect_to_client(int socketfd );
void   err(char *err_msg);
int    init_clents(char  *tok_file[]);
void   register_new_client(send_info *send,int newfd);
void   server_check_login(send_info *send,int newfd);
void   client_exit(send_info *send,int newfd);
int    get_sockfd(char dest[]);
void   private_chat ( send_info *send,int newfd);
void   public_chat (send_info *send ,int newfd);
void   get_all_online_clients (send_info *send ,int newfd);
void   admin_kick_client (send_info *send,int newfd);
void   admin_shutup_client(send_info *send,int newfd);
void   advanced_client_to_admin (send_info *send,int newfd);
void   drop_client_to_normal (send_info *send,int newfd) ;
int    admin_is_opt_self(send_info *send,int newfd);
int    admin_opt_self(send_info *send,int newfd);#endif

Linux Linux函数 Linux聊天程序 基于socket的TCP(有连接的)聊天程序相关推荐

  1. 基于Socket的TCP协议Linux聊天系统(即时聊天、传送文件)

    基于Socket的TCP协议Linux聊天系统(即时聊天.传送文件)有源码!!!! 4.1 需求分析 4.1.1 系统目的 4.1.2 系统结构图 4.1.3 系统功能 4.1.4 系统数据流图 4. ...

  2. python连接linux服务器并使用命令_python基于paramiko模块实现远程连接Linux虚拟机(服务器)并执行指定命令返回输出结果...

    对于开发者来说,windows是我们接触最多的操作系统了,但是Linux是我们必不可少的一项重要技能,很多服务或者应用都需要在Linux下运行,掌握Linux系统的基本使用也是非常重要的,今天有一个需 ...

  3. linux blind函数,Linux网络编程入门

    上一节创建socket时,仅指定了协议类型以及服务类型,但是没有指定具体的socket地址. bind函数含义如词义,给上述创建的套接字socket绑定一个socket地址. 比喻如下:我们创建了so ...

  4. linux 定时器函数,Linux 定时器

    时间间隔定时器 interval timer(时间间隔定时器)系统调用自从被POSIX标准化后,首次出现于4.2BSD,能够提供比alarm()还多的控制: #include int getitime ...

  5. Python多人聊天室-基于socket UDP协议

    简介 使用Python编写的基于socket UDP通信的多功能即时聊天室,包含Tkinter编写的图形化聊天界面,功能包括有账号注册和登录,登录成功后可以查看在线用户,并和聊天室内的其他在线用户聊天 ...

  6. 基于Android的聊天软件,Socket即时通信,实现用户在线聊天

    基于Android的聊天软件,Socket即时通信,单聊,聊天室,可自行扩展功能,完善细节. [实例功能] 1.运行程序,登录界面, 注册账号功能 2.进入主界面,有通讯录, 个人信息. 3.点击好友 ...

  7. 使用python基于socket的tcp服务器聊天室

    # coding=utf-8 import socket,threading,time '''代码说明:1.创建一个字典用于接受客户端的用户名和信息2.创建一个类对象client用于编写客户端套接字对 ...

  8. 基于socket通信实现Ftp连接

    FTP 概述 文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用.FTP的目标是提高文件的共享性和可靠高效地传送数据. 在传输文件时,FTP 客户端程序先与服务器建立连接 ...

  9. c++使用OpenSSL基于socket实现tcp双向认证ssl(使用TSL协议)代码实现

    相信各位对OpenSSL库已经不陌生了,目前笔者使用这个库实现了RSA.AES加解密和tcp的双向认证功能,下面来看tcp的双向认证. 1.什么是双向认证 简单说双向认证就是:客户端认证服务端是否合法 ...

最新文章

  1. Matlab与线性代数 -- 均匀分布的随机矩阵
  2. 详解计算机视觉五大技术:图像分类、对象检测、目标跟踪、语义分割和实例分割
  3. python与数据思维基础笔记_Python小课笔记--Python基础:数据和函数(二)
  4. 目录config.php怎么修改域名,config.php · wlphp/基于宝塔面板api给站点新增删除域名接口 - Gitee.com...
  5. scala中rdd无法join的问题
  6. java 关闭语句_java.sql.SQLRecoverableException: 关闭的语句
  7. 一招彻底帮你搞定HashMap源码,项目实战
  8. git push -u origin master和git push 远程主机名 本地分支名:远程分支名作用
  9. 大数据之HBase教程
  10. Form中获取数据源及扩展方法中获取变量
  11. 初识Opserver,StackExchange的监控解决方案
  12. zz 传苹果平板电脑的UI界面将具备“快速学习”功能
  13. 【无标题】手机扩容或更换字库后的指纹. 基带. 账号 .解锁等故障分析
  14. 高德地图web服务api反坐标查询/逆地理编码
  15. CFD后处理出图软件Tecplot的操作技巧(未完待续)
  16. 三维实景建模技术的应用
  17. Python爬虫有用的库:chardet,自动检测字符编码
  18. 安装JDK并配置环境变量(详细图文介绍)
  19. 用计算机用语说唯美的话,100句唯美说说qq空间句子合集
  20. C#时间格式化显示AM/PM

热门文章

  1. GO语言学习之路14
  2. sharepoint 列表查询范围
  3. H3C交换机配置DHCP服务器
  4. MySQL忘记root密码--不重启mysqd重置root密码
  5. 将进酒,如果李白也编程
  6. bootstrap多模态框
  7. 任务四十七:王牌特工 准备工作(二)
  8. dubbox 的各种管理和监管
  9. Activity端详
  10. php开源框架和平台(XAMPP、Wamp5和AppServ)简述