恼人的Windows 2003的BUG。。。

Windows2003在网络方面存在两个BUG,当然——只是我认为的BUG,说不定不是BUG而是我应用的问题,留待以后确认并更正吧。

一个是WinInet无法使用InternetSetOption设置代理验证信息,这个严格来说倒应该算是IE7的BUG,但是只是2003的IE7的BUG。。。 这样就只能用HttpAddRequestHeaders设置代理验证信息了,还得自己用Base64加密一下。。。

另一个是目前2003的SOCKET存在的怪事,对套接字调用recv函数时会导致本地发送一个重置请求,使得recv返回的错误是:“您的主机中的软件放弃了一个已建立的连接。”(WSAECONNABORTED),而KB931319提供的测试版本的补丁打了之后,倒是能收数据了,但是本地套接字断开的时候返回的错误变成了“在一个非套接字上尝试了一个操作。”(WSAENOTSOCK)。唉~~到底补丁还是测试的,真是拆东墙补西墙。。

我现在也糊涂了。。WSAECONNRESET应该是远程主机发起断开请求返回的错误值,而本地发起的断开请求返回的错误值应该是WSAECONNABORTED还是其它的呢?。。。

 

2007年10月18日注:

根据后来查的资料,我的理解是:如果远端首先调用了包含SD_SEND参数的shutdown,那么本地就会如文档所说,recv函数能正常返回,并以字节数为零标识远端断开了连接。此时我们应当调用closesocket以完成套接字的关闭。而如果本地要断开连接,也要用同样的调用作为“礼貌的请求”,然后在收到使用WSAEventSelect注册的FD_CLOSE事件后再调用closesocket函数才是优雅关闭套接字的方法。想想我以前压根就只用closesocket。。。唉~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值