资源简介
用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.em
文件 468 2011-07-31 15:34 网络聊天\客户端\Client\Client\Debug\Client.exe.em
文件 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个文件信息
评论
共有 条评论