UDP网络编程实战:基于MYSQL数据库的聊天服务器的搭建

  新手上路,自己学得一知半解,按照自己的理解,码了一个基于UDP的聊天服务器,后续会写与其配套的客户端。

  此服务器,主要有以下几点的功能:

  1.登录功能

  2.注册功能

  3.查询功能

  4.退出功能

  其具体介绍如下:

  1.登录功能

     传输数据格式:char recvBuf[100]

     客户端向服务器传输时格式为:

     当首位recvBuf[0]为'L'时,进入登录功能。

     [1]~[10]为用户名user;

     [11]~[20]为密码password;

     [21]~[35]为IP地址ip;(每次登录时要进行更新)

     服务端向客户端返回格式为:

     [0]为'L'

     [1]若为'1'则成功,若为'0'则失败(客户端需要对其返回消息进行相应操作)

 

     登录功能将用户名和密码于数据库中信息进行比对,若正确,则返回"L1"并且更新该用户的IP地址,否则则返回"L0"即登录失败。

  2.注册功能

    传输数据格式:char recvBuf[100]

     客户端向服务器传输时格式为:

     当首位recvBuf[0]为'R'时,进入注册功能。

     [1]为'1'时,进入注册查重功能,为'0'时,进入实际注册功能 

     2.1 查重功能

          客户端向服务器传输时格式为:

          'R'+'1'+user,其中user占10个长度

          服务器向客户端返回格式为:

          "R11"重复,"R10"不重复

          其主要功能为检测用户名是否重复(在数据库中)。

      2.2 实际注册功能

           客户端向服务器传输时格式为:

           'R'+'0'+user+password+IP,其中user,password,IP占用长度分别为10,10,15

            服务器向客户端返回格式为:

            "R01"成功,"R00"失败

            其主功能为向数据库中插入一条新的用户数据(包括用户名,密码,当前IP)

    3.查询功能

       客户端向服务器传输时格式为:

       'F'+user,其中user占10个长度

        服务器向客户端返回格式为:

        "F0"没用找到该用户;

        'F'+'1'+IP 有该用户,且IP为...,其中IP占15个长度

        主要功能为查询目标用户的IP。

    4.退出功能

       客户端向服务器传输时格式为:

       'q'+user,其中user占10个长度

       服务器向客户端返回格式为:

       "q1"成功退出;"q0"退出失败

       主要功能为告知服务器此用户已退出,并把此用户的IP改为"xxx.xxx.xxx.xxx"

其下是具体代码:

#include <Winsock2.h>
#include <stdio.h>
#include <iostream>
#include <winsock.h>
#include <mysql.h>
#pragma comment(lib,"libmySQL.lib")
using namespace std;

void menu(char recvBuf0,char *recvBuf,SOCKET sockSrv,SOCKADDR_IN addrSrv,int len);
void login(char *recvBuf,SOCKET sockSrv,SOCKADDR_IN addrClient,int len);
void _register(char *recvBuf,SOCKET sockSrv,SOCKADDR_IN addrClient,int len);
void findIP(char *recvBuf,SOCKET sockSrv,SOCKADDR_IN addrClient,int len);
void quit(char *recvBuf,SOCKET sockSrv,SOCKADDR_IN addrClient,int len);
BOOL find(MYSQL* mysql,string u,string p);

struct conn_info {
	char *host;
	char *user;
	char *password;
	char *db;
};

class Mysql
{
public:
/*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值