关于《Microsoft Windows网络编程》(Network Programming For Microsoft Windows, Second Edition)中的例子问题

x_xy 2003-08-21 11:39:40
买了清华的这本书,其中书上的一个例子我有点疑问,但是他上面所说的网站:http://www.wenyuqn.com.cn我一直进不去(另一个地方写着http://www.wenyuan.com.cn,所以我才怀疑它的例子是不是印错了,现在清华的翻译书的质量真是不敢恭维)。
例子是115页上一个关于WSAEventSelect模型的程序,即用Event和Socket傍定的方法写的一简单的Server的程序。其中WSAWaitForMultipleEvents来等待多个事件,得到的结果如果是nIndex的,那么nIndex - WSA_WAIT_EVENT_0就是被激活的那个事件的位置。
它在处理FD_READ, FD_WRITE的时候都是这样调用的,即nIndex - WSA_WAIT_EVENT_0;而在处理FD_CLOSE时候,却直接用的nIndex,这是怎么回事?是不是搞错了?
请指教
...全文
174 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
x_xy 2003-08-26
  • 打赏
  • 举报
回复
谢谢,让我一个人瞎琢磨了半天是不是别有玄机,出版社真该死。
dahai_2002 2003-08-22
  • 打赏
  • 举报
回复
楼上说的是对的,第一版(中文版)中写的是:
closesocket(Socket[Index - WSA_WAIT_EVENT_0]);
第二版可能写错了.我看的是第一版.
zhouyong0371 2003-08-21
  • 打赏
  • 举报
回复
你指的是这段代码吧?
if (NetworkEvents.lNetworkEvents & FD_CLOSE)
{
if (NetworkEvents.iErrorCode[FD_CLOSE_BIT] != 0)
{
printf("FD_CLOSE failed with error %d\n",
NetworkEvents.iErrorCode[FD_CLOSE_BIT]);
break;
}

closesocket(SocketArray[Index]);

// Remove socket and associated event from
// the Socket and Event arrays and decrement
// EventTotal
CompressArrays(EventArray, SocketArray, &EventTotal);
}
你的书是第二版的,这段代码Microsoft自己的英文版就写错了,第一版(中文版)P188是这样写的:
closesocket(Socket[Index - WSA_WAIT_EVENT_0]);

第一版的Socket等价于第二版的SocketArray

zhouyong0371 2003-08-21
  • 打赏
  • 举报
回复
《windows网络编程技术》就是搂主说的书
nicolas2001 2003-08-21
  • 打赏
  • 举报
回复
我想起一本经典的windows编程书籍《windows网络编程技术》
上面的讲解堪称经典,一语中的,是个ms的牛人写的;关于windows的网络编程问题讲解很有权威性。
只是这本书比较老了,不过应该还是可以买到的吧?!
nicolas2001 2003-08-21
  • 打赏
  • 举报
回复
GZ

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧