Netbios编程(二):服务器端(异步回调模型)
来源:互联网 发布:sqlserver 系统表 编辑:程序博客网 时间:2024/04/30 06:40
接上篇啦O(∩_∩)O哈哈~
前几步和事件模型一样,不再详述。
(1)枚举本机所有可用LANA
(2)重设每个LANA
(3)增加进程名字到每个LANA的名字表中
(4)在每个LANA进行监听客户连接。这一步和事件模型里不同
//回调函数。在监听到客户连接后,系统将调用此函数
void CALLBACK ListenCallback(PNCB pncb)
{
HANDLE hThread;
DWORD dwThreadId;
if (pncb->ncb_retcode != NRC_GOODRET)
{
printf("ERROR: ListenCallback: %d/n", pncb->ncb_retcode);
return;
}
Listen(pncb->ncb_lana_num, SERVER_NAME);
hThread = CreateThread(NULL, 0, ClientThread, (PVOID)pncb, 0,
&dwThreadId);
if (hThread == NULL)
{
printf("ERROR: CreateThread: %d/n", GetLastError());
return;
}
CloseHandle(hThread);
return;
}
//监听函数
int Listen(int lana, char *name)
{
PNCB pncb = NULL;
pncb = (PNCB)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT, sizeof(NCB));
pncb->ncb_command = NCBLISTEN | ASYNCH;
pncb->ncb_lana_num = lana;
pncb->ncb_post = ListenCallback;//回调函数,异步监听完成即客户连接后,系统将调用此函数。
//
// This is the name clients will connect to
//
memset(pncb->ncb_name, ' ', NCBNAMSZ);
strncpy(pncb->ncb_name, name, strlen(name));
//
// An '*' means we'll take a client connection from anyone. By
// specifying an actual name here you restrict connections to
// clients with that name only.
//
memset(pncb->ncb_callname, ' ', NCBNAMSZ);
pncb->ncb_callname[0] = '*';
if (Netbios(pncb) != NRC_GOODRET)
{
printf("ERROR: Netbios: NCBLISTEN: %d/n", pncb->ncb_retcode);
return pncb->ncb_retcode;
}
return NRC_GOODRET;
}
//下边两步和事件模型一样
(5)等待客户连接
(6)线程函数
完。
- Netbios编程(二):服务器端(异步回调模型)
- Netbios编程(二):服务器端(异步回调模型)
- Netbios编程(一):服务器端(事件模型)
- Netbios编程(一):服务器端(事件模型)
- Netbios编程(三):异步事件客户端
- 异步服务器端与客户端模型(一)
- socket编程(二)---- 简单的服务器端
- 二、异步选择模型(WSAAsyncSelect)
- 执行回调的异步编程模型
- 服务器端WSAAsyncSelect模型编程
- NetBios网络编程;NetBios理解
- C#学习心得(二) 异步编程
- 服务器端异步 Web 方法(二)
- bluetooth开发(二)------基于rfcomm通信编程之服务器端
- 服务器端编程心得(二)—— Reactor模式
- (二)Socket I/O模型之异步选择(WSAAsyncSelect)
- JQuery日记6.7 Javascript异步模型(二)
- 异步编程(2)——.NET的异步编程模型
- TheFirstPeriod—动态网站开发基础
- 常用Java面试题目
- 计算机视觉方向的一些顶级会议和期刊
- 字符串按1的个数排序
- 用户登录时调用存储过程验证(接上篇)
- Netbios编程(二):服务器端(异步回调模型)
- Quicksum_算法实现按顺序相加计算字符
- 根基不牢--我的窘迫面试经历
- 编程之美读书笔记_3.10 分层遍历二叉树
- 《我是一只IT小小鸟》书评──将要成为IT小小鸟
- 怀旧的一天
- 【转载】利用smarty生成静态页详解
- Android的OpenGL学习笔记(4)
- 一点感想