中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
XP sp2对socket函数的影响
作者:未知 时间:2005-07-27 23:18 出处:CSDN 责编:chinaitpower
              摘要:XP sp2对socket函数的影响
使用socket开发 的网络应用系统,在XP上运行的一向很好。现在移到新的机器上,新机器XP升级到sp2上,结果网络应用系统的服务器程序频繁出错,很奇怪。
后来经过跟踪发现,在新的环境中,recv函数发生了错误,虽然recv函数是阻塞的,但新的MSDN上说,recv及send函数在一些情况下会立即返回,并设置错误为WSAEWOULDBLOCK.。

下面是Microsoft的MSDN的 WSAAsyncSelect  API中说明:

As in the case of the select function, WSAAsyncSelect will frequently be used to determine when a data transfer operation (send or recv) can be issued with the expectation of immediate success. Nevertheless, a robust application must be prepared for the possibility that it can receive a message and issue a Windows Sockets 2 call that returns WSAEWOULDBLOCK immediately. For example, the following sequence of events is possible:

  1. Data arrives on socket s; Windows Sockets 2 posts WSAAsyncSelect message
  2. Application processes some other message
  3. While processing, application issues an ioctlsocket(s, FIONREAD...) and notices that there is data ready to be read
  4. Application issues a recv(s,...) to read the data
  5. Application loops to process next message, eventually reaching the WSAAsyncSelect message indicating that data is ready to read
  6. Application issues recv(s,...), which fails with the error WSAEWOULDBLOCK.

Other sequences are also possible.

The WS2_32.DLL will not continually flood an application with messages for a particular network event. Having successfully posted notification of a particular event to an application window, no further message(s) for that network event will be posted to the application window until the application makes the function call that implicitly reenables notification of that network event.

所以在网络应用中要检查是否错误并且是WSAEWOULDBLOCK,并进行相关处理。但在sp2之前居然都能正常使用。


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有