• 大小: 1.14MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-30
  • 语言: C/C++
  • 标签:

资源简介

用C++写的一个支持多个客户端连接服务器聊天的程序,可以实现客户端的私聊,是学习多线程,网络编程不错的资料,用的vs2005开发环境

资源截图

代码片段和文件信息

#include 

#include 
#include 
#include 
#include 
#pragma comment(lib“wsock32.lib“)
#define ID_STATE  1
#define ID_TEXTLIST  2
#define ID_SENDTEXT  3
#define ID_CLOSE  4
#define ID_SEND  5
#define ID_CONNECT  6
#define ID_CLOSElink 7
#define ID_IP  8
#define ID_CLIENTLIST 9


//全局变量
TCHAR szClassName[] = TEXT(“MyWindowClass“);  //窗口类名
TCHAR szWindowName[] = TEXT(“网络聊天室----客户端“); //窗口标题名

HWND hdlg;
HWND hwndhSendTexthSendBtnhTextListhCloseBtnhConnectBtnhIpInputhStatehCloselinkBtnhClientListhSendTip;
WSADATA wsaData;
SOCKET Remote;
sockaddr_in RemoteAdd;;
HANDLE ThdConnectThdRecvThdSend; //三个线程句柄
SYSTEMTIME sysTime; //保存本地时间信息
bool isClose=true; //判断程序是否结束
//HMENU hmenuhpopup;
char sendToIp[20]=“所有人“; //保存接收消息的客户端ip
//函数声明
ATOM MyRegisterClass(HINSTANCE hInstance);      // 定义及注册窗口类函数 
BOOL InitInstance(HINSTANCE int);              // 初始化函数(创建并显示窗口)
LRESULT CALLBACK WndProc(HWND UINT WPARAM LPARAM);       // 窗口函数
DWORD WINAPI ThreadConnect(LPVOID p);
DWORD WINAPI ThreadRecv(LPVOID p);
DWORD WINAPI ThreadSend(LPVOID p);
//****入口函数*************************************
int WINAPI WinMain(HINSTANCE hInstance
   HINSTANCE hPrevInstance
   LPSTR     lpCmdLine
   int       nCmdShow)
{
MSG msg;

//运行定义及注册窗口类的函数
MyRegisterClass(hInstance);

//执行应用程序初始化
if (!InitInstance (hInstance nCmdShow)) 
{
return FALSE;
}

//主消息循环
while(GetMessage(&msg NULL 0 0))   //从消息队列中取出消息
{
TranslateMessage(&msg);   // 将按键消息转换为字符消息
DispatchMessage(&msg);    // 将消息发送到相应的窗口函数
}
ShowWindow(hwndnCmdShow);
UpdateWindow(hwnd);
return (int)msg.wParam;   // 当GetMessage返回0时程序结束,将MSG的wParam参数返回操作系统
}


//****定义及注册窗口类函数*************************
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASS wc;

// 用描述主窗口的参数填充WNDCLASS结构
wc.style = CS_HREDRAW|CS_VREDRAW;   // 指定如果窗口大小改变就重绘
wc.lpfnWndProc = WndProc;         // 窗口函数指针
wc.cbClsExtra = 0;             // 没有额外的类内存
wc.cbWndExtra = 0;             // 没有额外的窗口内存
wc.hInstance = hInstance;     // 实例句柄 
wc.hIcon = LoadIcon(NULL IDI_APPLICATION);                 // 使用预定义图标
wc.hCursor = LoadCursor(NULL IDC_ARROW);             // 使用预定义光标
wc.hbrBackground = (HBRUSH)GetStockobject(WHITE_BRUSH);     // 使用白色背景画刷
wc.lpszMenuName = NULL;                                 // 不指定菜单
wc.lpszClassName = szClassName ;                         // 窗口类的名称

return RegisterClass(&wc);          //注册窗口类,如果成功则返回一个atom值,失败则返回0
}


//****初始化函数************************************
BOOL InitInstance(HINSTANCE hInstance int nCmdShow)
{


hwnd = CreateWindow(szClassName szWindowName WS_OVERLAPPEDWINDOW
300100 700 550 NULL NULL hInstance NULL);
if (!hwnd)
{
return FALSE;
}
ShowWindow(hwndnCmdShow);
UpdateWindow(hwnd);
//连接状态
hState=CreateWindow(“static““连接状态:等待连接“WS_VISIBLE|WS_CHILD
101015020hwnd(HMENU)1

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-06-30 15:44  网络聊天\
     目录           0  2011-06-30 15:45  网络聊天\客户端\
     目录           0  2011-08-22 19:06  网络聊天\客户端\Client\
     目录           0  2011-07-31 15:40  网络聊天\客户端\Client\Client\
     文件       33596  2011-07-23 15:24  网络聊天\客户端\Client\Client\Client.aps
     文件        2165  2011-07-23 15:24  网络聊天\客户端\Client\Client\Client.rc
     文件        4091  2011-07-23 15:12  网络聊天\客户端\Client\Client\Client.vcproj
     文件        1421  2011-07-06 10:18  网络聊天\客户端\Client\Client\Client.vcproj.gaoyunjie-PC.gaoyunjie.user
     文件        1409  2011-07-31 15:41  网络聊天\客户端\Client\Client\Client.vcproj.橪橪橪.gaoyunjie.user
     目录           0  2011-07-31 15:40  网络聊天\客户端\Client\Client\Debug\
     文件       19978  2011-07-31 15:40  网络聊天\客户端\Client\Client\Debug\BuildLog.htm
     文件         403  2011-07-31 15:34  网络聊天\客户端\Client\Client\Debug\Client.exe.embed.manifest
     文件         468  2011-07-31 15:34  网络聊天\客户端\Client\Client\Debug\Client.exe.embed.manifest.res
     文件         385  2011-07-31 15:40  网络聊天\客户端\Client\Client\Debug\Client.exe.intermediate.manifest
     文件         224  2011-07-31 15:34  网络聊天\客户端\Client\Client\Debug\Client.res
     文件        5380  2011-07-23 08:32  网络聊天\客户端\Client\Client\Debug\RCa04688
     文件       49107  2011-07-31 15:40  网络聊天\客户端\Client\Client\Debug\client.obj
     文件          65  2011-07-31 15:40  网络聊天\客户端\Client\Client\Debug\mt.dep
     文件      306176  2011-07-31 15:40  网络聊天\客户端\Client\Client\Debug\vc80.idb
     文件      102400  2011-07-31 15:40  网络聊天\客户端\Client\Client\Debug\vc80.pdb
     目录           0  2011-07-31 15:25  网络聊天\客户端\Client\Client\Pic\
     文件     1650276  2011-07-30 11:38  网络聊天\客户端\Client\Client\Pic\bg.bmp
     目录           0  2011-07-24 17:04  网络聊天\客户端\Client\Client\Release\
     文件       18716  2011-07-24 17:04  网络聊天\客户端\Client\Client\Release\BuildLog.htm
     文件       19456  2011-07-24 17:04  网络聊天\客户端\Client\Client\Release\vc80.idb
     文件       45056  2011-07-24 17:04  网络聊天\客户端\Client\Client\Release\vc80.pdb
     文件       10792  2011-07-31 15:40  网络聊天\客户端\Client\Client\client.cpp
     文件         495  2011-07-23 15:24  网络聊天\客户端\Client\Client\resource.h
     文件         883  2011-06-30 15:45  网络聊天\客户端\Client\Client.sln
     文件       30720  2011-07-31 15:41  网络聊天\客户端\Client\Client.suo
     目录           0  2011-08-22 19:06  网络聊天\服务器端\
............此处省略26个文件信息

评论

共有 条评论

相关资源