• 大小: 143KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: C/C++
  • 标签: 仿QQ  MFC  C++  

资源简介

说明:   类似于QQ的局域网聊天软件,包括服务器端和客户端程序,采用tcp/ip socket多线程编程,服务器端主要负责客户端用户的注册登陆,用户资料的获取。客户端负责与其他客户端进行信息控制与传递(包括聊天和传送文件)。 a、采用tcp非udp的socket编程,保证传输的稳定性和实时性。 b、在同步操作时大多数采用了多线程和超时控制。例如:在传送文件的同时能继续聊天。 c、服务器只负责用户登陆,查询,修改用户的基本信息和实时的在线用户列表。而不参与客户端之间的信息传递。 d、每个客户端既是聊天的发起端,又是接收端,实现了多点同时聊天和传送文件。

资源截图

代码片段和文件信息

// ChatDlg.cpp : implementation file
//

#include “stdafx.h“
#include “NetMsgClient.h“
#include “ChatDlg.h“

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif



/////////////////////////////////////////////////////////////////////////////
// CChatDlg dialog


CChatDlg::CChatDlg(CWnd* pParent /*=NULL*/)
: CDialog(CChatDlg::IDD pParent)
{
//{{AFX_DATA_INIT(CChatDlg)
m_strMsg = _T(““);
m_strShowMsg = _T(““);
//}}AFX_DATA_INIT
}


void CChatDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CChatDlg)
DDX_Control(pDX IDC_PROGRESS m_progressFile);
DDX_Text(pDX IDC_MSG m_strMsg);
DDX_Text(pDX IDC_EDIT_SHOWMSG m_strShowMsg);
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CChatDlg CDialog)
//{{AFX_MSG_MAP(CChatDlg)
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_SENDMSG OnSendmsg)
ON_BN_CLICKED(IDC_SHOWINFO OnShowinfo)
ON_BN_CLICKED(IDC_SENDFILE OnSendfile)
ON_BN_CLICKED(IDC_STOPFILE onstopfile)
ON_BN_CLICKED(IDC_BUTTON_CLEARMSG OnButtonClearmsg)
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CChatDlg message handlers

BOOL CChatDlg::OnInitDialog() 
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here

m_showUserInfoDlg.Create(IDD_SHOWUSERINFO_DIALOG);
GetDlgItem(IDC_MSG)->SetFocus();
m_nListCount=0;
isUsing = FALSE;
isChating = FALSE;

m_progressFile.SetPos(0);

return TRUE;  // return TRUE unless you set the focus to a control
              // EXCEPTION: OCX Property Pages should return FALSE
}


//如果是主动聊天形式,在发送信息时建立与对方用户msg服务器的连接
void CChatDlg::OnSendmsg() 
{
UpdateData(TRUE);
if(m_strMsg == _T(““))
{
AfxMessageBox(“发送消息不能为空“);
GetDlgItem(IDC_MSG)->SetFocus();
return;
}

if(isChating ==FALSE)
{
if(ConnectServerMsg() == FALSE)
{
GetDlgItem(IDC_MSG)->SetFocus();
return;
}
}
    
//连接已经建立好可以收发消息了
char buff[MAX_BUFF_SIZE];
CString strtitle;
strtitle.Format(“与%s正在聊天中...“m_strTargetNickname);
this->SetWindowText(strtitle);
memset(buff0sizeof(buff));
strcpy(buffm_strMsg);
if(send(m_cliSocketbuffsizeof(buff)0) == SOCKET_ERROR)
{
closesocket(m_cliSocket);
isChating = FALSE;
return;
}

ShowMsg(m_strLocalNicknamem_strMsg);
GetDlgItem(IDC_MSG)->SetFocus();
BeginRecvMsg();

}


//连接信息服务器
BOOL CChatDlg::ConnectServerMsg()
{
SOCKET cliSock;
SOCKADDR_IN inetAddr;
    if ((cliSock = socket (AF_INET SOCK_STREAM IPPROTO_IP)) == INVALID_SOCKET) 
{
        AfxMessageBox(“Create socket error!“);
        return FALSE;
    }

    inetAddr.sin_family=AF_INET;
inetAddr.sin_addr.s_addr= inet_addr(m_strIp);
inetAddr.sin_port=htons(MSG_PORT);

//连接
    while (connect(cliSock (struct sockaddr *)&inetAddr sizeof (inetAddr)) == SOCKET_ERROR) 
{
        AfxMessageBox(“连接对方主机出错,对方可能已经下线!“);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      22778  2004-12-28 15:08  netmsg\netmsg\源代码\NetMsgServer.rar

     文件      43031  2004-12-28 15:07  netmsg\netmsg\源代码\NetMsgClient.rar

     文件      12656  2004-09-11 00:59  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\NetMsgClient.rc

     文件       2386  2004-09-10 22:11  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\Resource.h

     文件       3687  2004-09-01 10:41  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\ReadMe.txt

     文件       1390  2004-09-01 10:41  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\NetMsgClient.h

     文件       6759  2004-09-10 15:45  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\TRAYICON.cpp

     文件       2265  2004-09-03 15:42  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\NetMsgClient.cpp

     文件       1947  2004-09-09 10:27  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\CREGISTRY.h

     文件       1102  2004-09-01 10:41  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\StdAfx.h

     文件        214  2004-09-01 10:41  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\StdAfx.cpp

     文件       1875  2003-05-09 14:08  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\TRAYICON.h

     文件       3343  2004-09-10 13:49  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\ChatDlg.h

     文件       1949  2004-09-09 16:13  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\RegisterDlg.h

     文件       1524  2004-09-09 02:41  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\UpdateUserInfoDlg.h

     文件        547  2004-09-01 10:41  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\NetMsgClient.dsw

     文件       3988  2004-09-09 02:42  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\UpdateUserInfoDlg.cpp

     文件       1425  2004-09-09 21:14  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\LoginDlg.h

     文件      21384  2004-09-10 23:17  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\NetMsgClientDlg.cpp

     文件       1337  2004-09-09 03:19  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\ShowUserInfoDlg.h

     文件       7864  2004-09-09 10:46  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\CREGISTRY.cpp

     文件       1966  2004-09-10 10:42  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\ConnectPrompt.cpp

     文件       4428  2004-09-10 21:32  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\LoginDlg.cpp

     文件        404  2004-09-01 10:41  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\res\NetMsgClient.rc2

     文件       2238  2004-09-06 18:03  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\res\MainIcon.ico

     文件       2238  2004-09-10 17:55  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\res\MainIconMan.ico

     文件       1486  2004-09-09 03:19  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\ShowUserInfoDlg.cpp

     文件       7326  2004-09-09 18:11  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\RegisterDlg.cpp

     文件       1389  2004-09-09 14:48  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\ConnectPrompt.h

     文件      18244  2004-09-10 22:07  netmsg\netmsg\源代码\NetMsgClient\NetMsgClient\ChatDlg.cpp

............此处省略38个文件信息

评论

共有 条评论