资源简介
基于非阻塞套接字的一个远程计算器。功能很小,但是涉及到的多线程管理可以参考

代码片段和文件信息
#include
using namespace std;
#include “MyDef.h“
#include
#pragma comment(lib “ws2_32.lib“)
#define TIMEFORTHREADWAIT 500
HANDLE hThreadSend; //发送数据线程
HANDLE hThreadRecv; //接收数据线程
SOCKET sSocket; //客户端套接字
BOOL bConning; //客户端状态 各个线程实时检测以便退出
CRITICAL_SECTION csSendBuf; //互斥访问csSendBuf
CRITICAL_SECTION csRecvBuf; //互斥访问csRecvBuf
DATABUF SendBuf; //存放客户端输入经过验证打包后的数据
DATABUF RecvBuf; //存放从服务器的数据
HANDLE hEventForSendData; //在主线程处理验证完输入信息后 通知发送线程
HANDLE hEventForShowData; //接收数据接收到数据拷贝至RecvBuf 通知主线程显示
HANDLE hThread[2]; //用于主线程检测接受和发送线程是否均已退出
void ShowConnMsg(BOOL bSuc); //用于显示是否成功连接至服务器
BOOL InitSocket(); //初始化套接字
void InitMember(); //初始化全局变量
BOOL InitClient(); //初始化客户端(即初始化全局变量和套接字)
void ShowInitMsg(BOOL bSuc); //用于显示是否成功初始化套接字
void ShowTipMsg(); //用于显示提示输入信息
BOOL ConnectServer(); //连接至服务器
BOOL CreateSendAndRecvThread(); //创建发送和接收线程
void ExitClient(); //退出客户端
void InputAndOutput(); //执行输入输出(主线程)
void ShowDataResultMsg(); //执行显示RecvBuf数据
BOOL PackByebye(const char* pExpre); //对消息ByeBye打包
BOOL Packexpression(const char* pExpre);//对经过验证的表达式打包
DWORD _stdcall SendThread(void* lParam);//发送线程
DWORD _stdcall RecvThread(void* lParam);//接收线程
int main()
{
if(InitClient())
ShowInitMsg(TRUE); //初始化成功
else
{
ShowInitMsg(FALSE); //初始化失败 退出
ExitClient();
return -1;
}
if (!ConnectServer()) //连接至服务器
{
ShowConnMsg(FALSE); //连接失败 退出
ExitClient();
return -1;
}
else
ShowConnMsg(TRUE); //连接成功
if(!CreateSendAndRecvThread()) //创建发送和接收线程 开始运行
{
ExitClient(); //创建失败 退出
return -1;
}
InputAndOutput(); //执行输入输出(并对输入和输出结果进行打包和验证等)
ExitClient(); //InputAndOutput退出 退出客户端
return 0;
}
void ShowConnMsg(BOOL bSuc)
{
if (bSuc)
{
cout< cout<<“----------------------------------“< cout<<“-------已成功连接至服务器---------“< cout<<“----------------------------------“< }
else
{
cout< cout<<“----------------------------------“< cout<<“---------连接服务器失败!---------“< cout<<“----------客户端即将退出----------“< cout<<“----------------------------------“< }
}
void ShowInitMsg(BOOL bSuc)
{
if (bSuc)
{
cout<<“----------------------------------“< cout<<“--------客户端初始化完成----------“< cout<<“---------正在连接服务器...--------“< cout<<“----------------------------------“< }
else
{
cout<<“----------------------------------“< cout<<“----------客户端初始化失败!-------“< cout<<“------------客户端已退出----------“< cout<<“----------------------------------“< }
}
void InitMember()
//初始化全局变量
{
hThreadRecv=NULL;
hThreadSend=NULL;
sSocket =INVALID_SOCKET;
bConning = FALSE;
InitializeCriticalSection(&csSendBuf);
InitializeCriticalSecti
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-11-01 10:28 非阻塞套接字多线程实例\
目录 0 2012-11-01 10:28 非阻塞套接字多线程实例\Client\
文件 11413 2012-10-17 22:33 非阻塞套接字多线程实例\Client\Client.cpp
文件 4344 2012-10-15 23:42 非阻塞套接字多线程实例\Client\Client.dsp
文件 537 2012-10-15 22:02 非阻塞套接字多线程实例\Client\Client.dsw
文件 50176 2012-10-18 00:40 非阻塞套接字多线程实例\Client\Client.ncb
文件 48640 2012-10-18 00:40 非阻塞套接字多线程实例\Client\Client.opt
文件 248 2012-10-18 00:39 非阻塞套接字多线程实例\Client\Client.plg
文件 304 2012-10-17 18:18 非阻塞套接字多线程实例\Client\MyDef.h
目录 0 2012-11-01 10:28 非阻塞套接字多线程实例\Server\
文件 4723 2012-10-17 23:59 非阻塞套接字多线程实例\Server\Client.cpp
文件 1348 2012-10-17 09:57 非阻塞套接字多线程实例\Server\Client.h
文件 240 2012-10-15 22:59 非阻塞套接字多线程实例\Server\MyDef.h
文件 8684 2012-10-17 18:10 非阻塞套接字多线程实例\Server\Server.cpp
文件 4462 2012-10-15 23:01 非阻塞套接字多线程实例\Server\Server.dsp
文件 537 2012-10-11 20:53 非阻塞套接字多线程实例\Server\Server.dsw
文件 58368 2012-10-18 00:40 非阻塞套接字多线程实例\Server\Server.ncb
文件 49664 2012-10-18 00:40 非阻塞套接字多线程实例\Server\Server.opt
文件 246 2012-10-18 00:39 非阻塞套接字多线程实例\Server\Server.plg
文件 293 2007-10-15 15:10 非阻塞套接字多线程实例\Server\StdAfx.cpp
文件 769 2007-10-15 16:23 非阻塞套接字多线程实例\Server\StdAfx.h
- 上一篇:t-s模糊神经网络程序
- 下一篇:兰勃特墨卡托投影.rar
相关资源
- 编写简单的RMI程序 多线程web 服务器
- 多线程生产者消费者模式
- 多线程实例:桌面智能弹球小游戏
- WPF多线程演示
- 易语言:多线程传多变量的最稳定方
- 排队买票多线程问题
- 强大的完善的 活动抽奖系统适合各单
- 十字路口红绿灯交通情况模拟
- Qt 多线程连接数据库——数据库
- 易语言多线程端口扫描源码
- POSIX多线程程序设计中文版源码
- 易语言md5定向爆破源码
- 多线程扫描工具
- Delphi.High.Performance.Applications.Concurren
- Qt5的多线程小程序,实现按钮开关线
- 控制台串口通信程序
- POSIX多线程程序设计中文版pdf
- 使用多线程及图像分块实现图像处理
- 图像处理中使用多线程及图像分块实
- p2p文件共享系统 含代码和文档
- 武汉理工大学面向对象与多线程综合
- 多线程编程指南[中文完整翻译版] –
- QT多线程实现图片以缩略图形式显示
- qt利用线程实现多任务
- 基于socket的多线程QQ聊天系统(代码
- UDP socket 多线程
- linux多线程编程书籍
- 串口通信+多线程+数据错乱自动恢复
- VC五子棋源代码 想要的速度下哦 多线
- 多核多线程技术 (高清 带书签) (
评论
共有 条评论