Linux Linux函数 Linux聊天程序 基于socket的TCP(有连接的)聊天程序
/*在此只付上头文件,如需要去我的资源下载。
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(有连接的)聊天程序相关推荐
- 基于Socket的TCP协议Linux聊天系统(即时聊天、传送文件)
基于Socket的TCP协议Linux聊天系统(即时聊天.传送文件)有源码!!!! 4.1 需求分析 4.1.1 系统目的 4.1.2 系统结构图 4.1.3 系统功能 4.1.4 系统数据流图 4. ...
- python连接linux服务器并使用命令_python基于paramiko模块实现远程连接Linux虚拟机(服务器)并执行指定命令返回输出结果...
对于开发者来说,windows是我们接触最多的操作系统了,但是Linux是我们必不可少的一项重要技能,很多服务或者应用都需要在Linux下运行,掌握Linux系统的基本使用也是非常重要的,今天有一个需 ...
- linux blind函数,Linux网络编程入门
上一节创建socket时,仅指定了协议类型以及服务类型,但是没有指定具体的socket地址. bind函数含义如词义,给上述创建的套接字socket绑定一个socket地址. 比喻如下:我们创建了so ...
- linux 定时器函数,Linux 定时器
时间间隔定时器 interval timer(时间间隔定时器)系统调用自从被POSIX标准化后,首次出现于4.2BSD,能够提供比alarm()还多的控制: #include int getitime ...
- Python多人聊天室-基于socket UDP协议
简介 使用Python编写的基于socket UDP通信的多功能即时聊天室,包含Tkinter编写的图形化聊天界面,功能包括有账号注册和登录,登录成功后可以查看在线用户,并和聊天室内的其他在线用户聊天 ...
- 基于Android的聊天软件,Socket即时通信,实现用户在线聊天
基于Android的聊天软件,Socket即时通信,单聊,聊天室,可自行扩展功能,完善细节. [实例功能] 1.运行程序,登录界面, 注册账号功能 2.进入主界面,有通讯录, 个人信息. 3.点击好友 ...
- 使用python基于socket的tcp服务器聊天室
# coding=utf-8 import socket,threading,time '''代码说明:1.创建一个字典用于接受客户端的用户名和信息2.创建一个类对象client用于编写客户端套接字对 ...
- 基于socket通信实现Ftp连接
FTP 概述 文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用.FTP的目标是提高文件的共享性和可靠高效地传送数据. 在传输文件时,FTP 客户端程序先与服务器建立连接 ...
- c++使用OpenSSL基于socket实现tcp双向认证ssl(使用TSL协议)代码实现
相信各位对OpenSSL库已经不陌生了,目前笔者使用这个库实现了RSA.AES加解密和tcp的双向认证功能,下面来看tcp的双向认证. 1.什么是双向认证 简单说双向认证就是:客户端认证服务端是否合法 ...
最新文章
- Matlab与线性代数 -- 均匀分布的随机矩阵
- 详解计算机视觉五大技术:图像分类、对象检测、目标跟踪、语义分割和实例分割
- python与数据思维基础笔记_Python小课笔记--Python基础:数据和函数(二)
- 目录config.php怎么修改域名,config.php · wlphp/基于宝塔面板api给站点新增删除域名接口 - Gitee.com...
- scala中rdd无法join的问题
- java 关闭语句_java.sql.SQLRecoverableException: 关闭的语句
- 一招彻底帮你搞定HashMap源码,项目实战
- git push -u origin master和git push 远程主机名 本地分支名:远程分支名作用
- 大数据之HBase教程
- Form中获取数据源及扩展方法中获取变量
- 初识Opserver,StackExchange的监控解决方案
- zz 传苹果平板电脑的UI界面将具备“快速学习”功能
- 【无标题】手机扩容或更换字库后的指纹. 基带. 账号 .解锁等故障分析
- 高德地图web服务api反坐标查询/逆地理编码
- CFD后处理出图软件Tecplot的操作技巧(未完待续)
- 三维实景建模技术的应用
- Python爬虫有用的库:chardet,自动检测字符编码
- 安装JDK并配置环境变量(详细图文介绍)
- 用计算机用语说唯美的话,100句唯美说说qq空间句子合集
- C#时间格式化显示AM/PM