trakStar系列跟踪器伺服程序


trakStar系列跟踪器的伺服程序,采用多线程命名管道技术,可以为多个进程提供数据输出服务。
资源截图
代码片段和文件信息
#include “Tracker.h“
#include 
#include 
#include 
#include  

#define BUFFERSIZE 256 //缓冲区大小
#define MAX_NUM_PIPES 5  //线程个数,即允许同时连接的客户机个数

//隐藏窗口
#pragma comment( linker “/subsystem:“windows“ /entry:“mainCRTStartup“ “)

DWORD WINAPI PipeInstanceProc(LPVOID lpParameter);  //多线程回调函数
DWORD WINAPI ListenPipeProc(LPVOID lpParameter);  //监听管道回调函数
Tracker *tracker;

int main(int argcchar** argv)
{
//判断程序是否运行第二次
HANDLE hMutex = NULL;
TCHAR* lpszName = “TestMutex“;

hMutex = CreateMutex(NULLFALSElpszName);
DWORD dwRet=GetLastError();

if(hMutex)
{
if(ERROR_ALREADY_EXISTS == dwRet)
{
//some warnings here...
CloseHandle(hMutex);

return -1;
}
}

printf(“等待跟踪器启动...
“);
tracker=new Tracker();
printf(“跟踪器开始写数据...
“);

HANDLE hThreadHandle;//线程句柄
DWORD threadId;//线程号

//创建五个线程,分别处理一个客户机连接
for (int i=0;i {
hThreadHandle=CreateThread(
NULL//WinNT后永久设为NULL
0//线程初始化堆栈大小,一般设为0
PipeInstanceProc//线程回调函数的指针,即函数名
NULL//传输给回调函数的参数,通过它实现对回调函数的控制
0//线程创建完毕后的状态,0表示创建后执行线程,CREATE_SUSPENDED表示暂时挂起,等待叫醒
&threadId//线程ID值的地址
);
if(hThreadHandle==NULL)
{
printf(“创建线程%d失败!%d
“iGetLastError());

return 0;
}

printf(“创建命名管道线程%d成功!“i);
}

//等待线程结束
WaitForSingleobject(hThreadHandleINFINITE);
CloseHandle(hThreadHandle);
hThreadHandle=NULL;

delete tracker;

return 0;
}

/*
*    函数名称: PipeInstanceProc
* 函数参数: (in)LPVOID:     附加信息
*     函数作用: 处理一个命名管道实例的线程
* 函数返回值:(DWORD)若顺利完成,则返回1;若获取域名失败,则返回0
*/
DWORD WINAPI PipeInstanceProc(LPVOID lpParameter)
{
HANDLE hPipeHandle;//命名管道的句柄
HANDLE hThreadListen;//管道监听句柄

/*
* 函数名称: CreateNamedPipe
* 函数参数: (in)LPCTSTR       命名管道名字,UNC标准( \IP地址Pipe唯一标识文件路径 )
*      (in)DWORD       命名管道模式,单双向,读写控制,安全模式( 均被宏定义好,可位或操作 )
*      (in)DWORD       命名管道读,写,等待模式( 均被宏定义好,可位或操作 )
*      (in)DWORD       命名管道最多可创建的实例句柄个数
*      (in)DWORD       命名管道输出缓冲区大小
*      (in)DWORD       命名管道输入缓冲区大小
*      (in)DWORD       命名管道默认超时时间
*      (in)LPSECURITY_ATTRIBUTES 命名管道安全描述符,若为NULL,则句柄不可继承的默认安全。
* 函数作用: 创建一个命名管道实例
* 函数返回值:(HANDLE)成功则返回命名管道实例的句柄,失败则返回值INVALID_HANDLE_VALUE
*/
hPipeHandle = CreateNamedPipe(
_T(“\\.\pipe\TrackerService“)
PIPE_ACCESS_DUPLEX
PIPE_TYPE_BYTE | PIPE_READMODE_BYTE |PIPE_WAIT
PIPE_UNLIMITED_INSTANCES
BUFFERSIZE
BUFFERSIZE
0
NULL
);
if (hPipeHandle == INVALID_HANDLE_VALUE)
{
printf(“创建命名管道失败!%d
“GetLastError());

return 0;
}

printf(“创建命名管道成功!
“);

HANDLE h;//线程句柄,用于一个客户机退出连接之后,服务器重新建立一个服务线程

//处理客户端信息
while (1)
{
/*
*    函数名称: ConnectNamedPipe
* 函数参数: (in)HANDLE:     命名管道实例句柄
*      (in)LPOVERLAPPED    是否锁定式命名管道
*     函数作用: 建立命名管道连接并监听
* 函数返回值:(bool)若顺利建立,则返回true;若顺利失败,则返回false
*/
if (ConnectNamedPipe(hPipeHandleNULL))
{
printf(“有客户端连接命名管道!
“);
//Create listen pipe thread
hThreadList

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

     文件         33  2011-03-31 10:55  TrackerServiceDebugPCIBird3.ini

     文件      45056  2011-03-31 10:54  TrackerServiceDebugTrackerService.exe

     文件     446976  2011-03-31 10:57  TrackerServiceDebugTrackerService.ilk

     文件     625664  2011-03-31 10:54  TrackerServiceDebugTrackerService.pdb

     文件         33  2010-11-03 23:21  TrackerServiceReleasePCIBird3.ini

     文件      11776  2010-11-04 11:48  TrackerServiceReleaseTrackerService.exe

     文件     437248  2010-11-04 11:48  TrackerServiceReleaseTrackerService.pdb

     文件       6058  2011-03-31 10:57  TrackerServiceTrackerServiceDebugBuildLog.htm

     文件      52345  2011-03-31 10:57  TrackerServiceTrackerServiceDebugMain.obj

     文件         69  2011-03-31 10:54  TrackerServiceTrackerServiceDebugmt.dep

     文件      23412  2011-03-26 16:49  TrackerServiceTrackerServiceDebugSingleClass.obj

     文件      66330  2011-03-31 10:53  TrackerServiceTrackerServiceDebugTracker.obj

     文件        663  2011-03-31 10:54  TrackerServiceTrackerServiceDebugTrackerService.exe.embed.manifest

     文件        728  2011-03-31 10:54  TrackerServiceTrackerServiceDebugTrackerService.exe.embed.manifest.res

     文件        621  2011-03-31 10:54  TrackerServiceTrackerServiceDebugTrackerService.exe.intermediate.manifest

     文件     609280  2011-03-31 10:57  TrackerServiceTrackerServiceDebugvc90.idb

     文件     266240  2011-03-31 10:57  TrackerServiceTrackerServiceDebugvc90.pdb

     文件       5507  2011-03-31 10:57  TrackerServiceTrackerServiceMain.cpp

     文件         33  2011-03-31 10:51  TrackerServiceTrackerServicePCIBird3.ini

     文件       5172  2010-11-04 12:01  TrackerServiceTrackerServiceReleaseBuildLog.htm

     文件     587127  2010-11-04 11:59  TrackerServiceTrackerServiceReleaseMain.obj

     文件         69  2010-11-04 11:48  TrackerServiceTrackerServiceReleasemt.dep

     文件     591728  2010-11-03 23:20  TrackerServiceTrackerServiceReleaseTracker.obj

     文件        616  2010-11-04 11:48  TrackerServiceTrackerServiceReleaseTrackerService.exe.intermediate.manifest

     文件     322560  2010-11-04 11:59  TrackerServiceTrackerServiceReleasevc90.idb

     文件     241664  2010-11-04 11:59  TrackerServiceTrackerServiceReleasevc90.pdb

     文件        327  2011-03-26 16:47  TrackerServiceTrackerServiceSingleClass.cpp

     文件        227  2011-03-26 16:32  TrackerServiceTrackerServiceSingleClass.h

     文件       3221  2011-03-26 17:14  TrackerServiceTrackerServiceTracker.cpp

     文件       2012  2010-11-24 23:40  TrackerServiceTrackerServiceTracker.h

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)