• 大小: 2.91MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-13
  • 语言: 其他
  • 标签: 跟踪器  伺服  

资源简介

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(“等待跟踪器启动...\n“);
tracker=new Tracker();
printf(“跟踪器开始写数据...\n“);

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\n“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\n“GetLastError());

return 0;
}

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

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

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

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

     文件         33  2011-03-31 10:55  TrackerService\Debug\PCIBird3.ini

     文件      45056  2011-03-31 10:54  TrackerService\Debug\TrackerService.exe

     文件     446976  2011-03-31 10:57  TrackerService\Debug\TrackerService.ilk

     文件     625664  2011-03-31 10:54  TrackerService\Debug\TrackerService.pdb

     文件         33  2010-11-03 23:21  TrackerService\Release\PCIBird3.ini

     文件      11776  2010-11-04 11:48  TrackerService\Release\TrackerService.exe

     文件     437248  2010-11-04 11:48  TrackerService\Release\TrackerService.pdb

     文件       6058  2011-03-31 10:57  TrackerService\TrackerService\Debug\BuildLog.htm

     文件      52345  2011-03-31 10:57  TrackerService\TrackerService\Debug\Main.obj

     文件         69  2011-03-31 10:54  TrackerService\TrackerService\Debug\mt.dep

     文件      23412  2011-03-26 16:49  TrackerService\TrackerService\Debug\SingleClass.obj

     文件      66330  2011-03-31 10:53  TrackerService\TrackerService\Debug\Tracker.obj

     文件        663  2011-03-31 10:54  TrackerService\TrackerService\Debug\TrackerService.exe.embed.manifest

     文件        728  2011-03-31 10:54  TrackerService\TrackerService\Debug\TrackerService.exe.embed.manifest.res

     文件        621  2011-03-31 10:54  TrackerService\TrackerService\Debug\TrackerService.exe.intermediate.manifest

     文件     609280  2011-03-31 10:57  TrackerService\TrackerService\Debug\vc90.idb

     文件     266240  2011-03-31 10:57  TrackerService\TrackerService\Debug\vc90.pdb

     文件       5507  2011-03-31 10:57  TrackerService\TrackerService\Main.cpp

     文件         33  2011-03-31 10:51  TrackerService\TrackerService\PCIBird3.ini

     文件       5172  2010-11-04 12:01  TrackerService\TrackerService\Release\BuildLog.htm

     文件     587127  2010-11-04 11:59  TrackerService\TrackerService\Release\Main.obj

     文件         69  2010-11-04 11:48  TrackerService\TrackerService\Release\mt.dep

     文件     591728  2010-11-03 23:20  TrackerService\TrackerService\Release\Tracker.obj

     文件        616  2010-11-04 11:48  TrackerService\TrackerService\Release\TrackerService.exe.intermediate.manifest

     文件     322560  2010-11-04 11:59  TrackerService\TrackerService\Release\vc90.idb

     文件     241664  2010-11-04 11:59  TrackerService\TrackerService\Release\vc90.pdb

     文件        327  2011-03-26 16:47  TrackerService\TrackerService\SingleClass.cpp

     文件        227  2011-03-26 16:32  TrackerService\TrackerService\SingleClass.h

     文件       3221  2011-03-26 17:14  TrackerService\TrackerService\Tracker.cpp

     文件       2012  2010-11-24 23:40  TrackerService\TrackerService\Tracker.h

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

评论

共有 条评论