Hello,今天小编给大家带来一个用Visual studio编写的聊天室项目, 此聊天室使用tcp/IP 传输信息,采用socket 和MFC 两个框架。
项目名称:凤凰聊天室
项目目的:实现在不同客户端之间传输信息和txt文件。在最终实现过程中需使用内网穿透来让在不同局域网内的客户端实现通信
创建项目的主要思想:
我们需要客户端和服务端两个端来实现这一聊天室。
客户端将数据通过指定端口传给指定服务器(一般来说就是一台电脑),服务器一旦受到请求,通过开启多个线程来同时与多个客户端进行通讯, 并将收到的数据附送给所有与服务器连接的客户端。
由于需要实现不同局域网之间的通讯,需要实现内网穿透,具体教程按照我的另一篇文章
项目实现:
首先先上几个之后需要用的头文件
附上下载地址(用MFC界面):
Multichatroom下载
https://download.youkuaiyun.com/download/qq_42662283/12488515
写码不易,如果觉得从代码里学到一些知识,关注收藏一下呗,为小编鼓励一下,谢谢!!!
第二篇文章(客户端实现)
https://blog.youkuaiyun.com/qq_42662283/article/details/106493781
FileUtil.h
#pragma once
#include <stdio.h>
#include <WINSOCK2.H>
#include <io.h>
#include <string>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
class FileUtil
{
private:
FILE *f;
public:
FILE * openFile(CString filename)
{
char* name = CString2Char(filename);
if (f = fopen(name, "r"))
{
printf("文件打开成功\n");
return f;
}
else
{
printf("文件不存在\n");
return NULL;
}
}
FILE * createFile(char *name)
{
//创建一个空的文件,若有同名文件存在则将内容删除
if (f = fopen(name, "w"))
{
printf("文件创建成功\n");
}
else
{
printf("文件创建失败\n");
}
return f;
}
bool createDir(char *dir)
{
char head[MAX_PATH] = "md ";
return system(strcat(head, dir));
}
char* CString2Char(CString string)
{
int n = string.GetLength(); //获取str的字符数
char *pChar = new char[n + 1]; //以字节为单位
WideCharToMultiByte(CP_ACP, 0, string, n, pChar, n + 1, NULL, NULL); //宽字节编码转换成多字节编码
pChar[n] = '\0'; //多字节字符以'\0'结束