资源简介
采用的C++,MFC编写的聊天室软件,有语音聊天,文件传输,文字聊天功能。服务器和客户端是封装到一起的。界面是最简洁经典的界面,没有进行优化和美化。代码可以直接运行。
代码片段和文件信息
// ChatClient.cpp : implementation file
//
#include “stdafx.h“
#include “ChatRoom.h“
#include “ChatClient.h“
#include “ChatRoomDlg.h“
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CChatClient
CChatClient::CChatClient()
{
m_aSessionIn=NULL;//串行化方式输入数据
m_aSessionOut=NULL;//串行输出数据
m_sfSocketFile=NULL;//和Socket关联的串行化文件
m_bInit=false;
m_bClose=false;
}
CChatClient::~CChatClient()
{
if(m_aSessionIn)
delete m_aSessionIn;
if(m_aSessionOut)
delete m_aSessionOut;
if(m_sfSocketFile)
delete m_sfSocketFile;
}
// Do not edit the following lines which are needed by ClassWizard.
#if 0
BEGIN_MESSAGE_MAP(CChatClient CSocket)
//{{AFX_MSG_MAP(CChatClient)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
#endif // 0
/////////////////////////////////////////////////////////////////////////////
// CChatClient member functions
void CChatClient::Init(CChatRoomDlg *dlg)
{
m_sfSocketFile=new CSocketFile(this);
m_aSessionIn=new CArchive(m_sfSocketFileCArchive::load);
m_aSessionOut=new CArchive(m_sfSocketFileCArchive::store);
m_bClose=false;
this->m_dlg=dlg;
}
BOOL CChatClient::SendMessage(CMessg *msg)
{
if(m_aSessionOut != NULL)
{
msg->Serialize(*m_aSessionOut);
m_aSessionOut->Flush();
return TRUE;
}
else
{//对方关闭了连接
m_bClose=true;
CloseSocket();
m_dlg->CloseSessionSocket();
return FALSE;
}
}
void CChatClient::CloseSocket()
{
if(m_aSessionIn)
{
delete m_aSessionIn;
m_aSessionIn=NULL;
}
if(m_aSessionOut)
{
delete m_aSessionOut;
m_aSessionOut=NULL;
}
if(m_sfSocketFile)
{
delete m_aSessionOut;
m_sfSocketFile=NULL;
}
Close();
m_bInit=false;
m_bClose=true;
}
//获得主机名
int CChatClient::GetLocalHostName(CString &sHostName)
{
char szHostName[256];
int nRetCode;
nRetCode=gethostname(szHostNamesizeof(szHostName));
if(nRetCode!=0)
{
sHostName=_T(“没有取得“);
return GetLastError();
}
sHostName=szHostName;
return 0;
}
//获得本地IP地址
int CChatClient::GetIpAddress(const CString &sHostNameCString &sIpAddress)
{
struct hostent FAR * lpHostEnt=gethostbyname(sHostName);
if(lpHostEnt==NULL)
{
sIpAddress=_T(““);
return GetLastError();
}
LPSTR lpAddr=lpHostEnt->h_addr_list[0];/* list of addresses */
if(lpAddr)
{
struct in_addr inAddr;
memmove(&inAddrlpAddr4); //(目的对象,源对象,字符复制的字节数)转换为标准格式
sIpAddress=inet_ntoa(inAddr);//inet_ntoa函数将一个(Ipv4)互联网络地址转换成一个字符串在互联网标准点格式。
if(sIpAddress.IsEmpty())
sIpAddress=_T(“没有取得IP地址“);
}
return 0;
}
//获得本地IP地址
int CChatClient::GetIpAddress(const CString &sHostNameBYTE &f0BYTE &f1BYTE &f2BYTE &f3)
{
struct hostent FAR * lpHostEnt=gethostbyname(sHostName);
if(lpHostEnt==NULL)
{
f0=f1=f2=f3=0;
return GetLastError();
}
LPSTR lpAddr=lpHostEnt->h_addr_list[0];
if(lpAddr)
{
struct in
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-05-26 21:18 ChatRoom\
文件 6309 2014-05-09 09:43 ChatRoom\ChatClient.cpp
文件 1917 2014-05-09 20:31 ChatRoom\ChatClient.h
文件 37500 2014-05-10 09:43 ChatRoom\ChatRoom.aps
文件 3030 2014-05-26 21:18 ChatRoom\ChatRoom.clw
文件 2185 2014-04-26 11:18 ChatRoom\ChatRoom.cpp
文件 4892 2014-04-30 10:31 ChatRoom\ChatRoom.dsp
文件 541 2014-04-26 11:18 ChatRoom\ChatRoom.dsw
文件 1346 2014-04-26 11:18 ChatRoom\ChatRoom.h
文件 82944 2014-05-26 21:18 ChatRoom\ChatRoom.ncb
文件 57856 2014-05-26 21:18 ChatRoom\ChatRoom.opt
文件 250 2014-05-26 18:50 ChatRoom\ChatRoom.plg
文件 7700 2014-05-10 09:43 ChatRoom\ChatRoom.rc
文件 11283 2014-05-11 14:49 ChatRoom\ChatRoomDlg.cpp
文件 2586 2014-05-08 11:05 ChatRoom\ChatRoomDlg.h
文件 1271 2014-04-28 11:15 ChatRoom\ChatServer.cpp
文件 1274 2014-04-26 12:01 ChatRoom\ChatServer.h
文件 1483 2014-04-29 14:13 ChatRoom\CMessg.cpp
文件 658 2014-04-29 14:13 ChatRoom\CMessg.h
目录 0 2014-05-26 18:49 ChatRoom\Debug\
文件 31528 2014-05-26 18:49 ChatRoom\Debug\ChatClient.obj
文件 68605 2014-05-26 18:49 ChatRoom\Debug\ChatClient.sbr
文件 4006912 2014-04-29 14:38 ChatRoom\Debug\ChatRoom.bsc
文件 139331 2014-05-26 18:49 ChatRoom\Debug\ChatRoom.exe
文件 451976 2014-05-26 18:49 ChatRoom\Debug\ChatRoom.ilk
文件 17404 2014-05-26 18:49 ChatRoom\Debug\ChatRoom.obj
文件 7087752 2014-04-29 10:55 ChatRoom\Debug\ChatRoom.pch
文件 517120 2014-05-26 18:49 ChatRoom\Debug\ChatRoom.pdb
文件 3812 2014-05-10 09:43 ChatRoom\Debug\ChatRoom.res
文件 66557 2014-05-26 18:49 ChatRoom\Debug\ChatRoom.sbr
文件 61451 2014-05-26 18:49 ChatRoom\Debug\ChatRoomDlg.obj
............此处省略27个文件信息
- 上一篇:MCX314运动控制芯片与数控系统设计
- 下一篇:三维建筑物漫游程序 opengl
相关资源
- 基于MFC的Basler相机SDK采集
- C++编程思想C++编程思想
- linux libstdc++.so.6库
- C++语言程序设计学生用书[aOkREm]
- MFC黑马程序员教程.rar
- mfc通讯录.zip
- C++经典程序100例
- zw_VS2013MFC编程基础19个专题.zip
- MFC绘制Bezier,B样条,NURBS曲线曲面以
- Problem Solving with C++ 10th Global Edition
- WIN32程序的C++编程
- MFC类库详解中文CHM版
- C++编写五子棋带AI,mfc,附教程
- C++遗传算法解决柔性作业车间调度附
- 基于VC++的包过滤防火墙论文+源码
- 基于Skinsharp的MFC界面美化(破解版含
- C++程序设计思想与方法课后答案
- C++调用C#dll代码
- MFC皮肤库附带使用教程
- 网络编程\\编程实现收发电子邮件
- 课程设计 停车场管理系统 MFC
- GDAL2.1.0 X86和X64编译好的库 C++
- 《Essential C++》.pdf
- 传奇源代码cpp版本.zip
- C#调用C++的dll,回调函数,string和in
- Borland C++ 5.5 编译器
- C++dll生成给C#调用
- 社区发现中的GN算法C++实现
- 大漠7.1933VIP所有工具+VC++新手注册安装
- c++ 飞翔的小鸟
评论
共有 条评论