C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  0 随笔 :: 7 文章 :: 0 评论 :: 0 Trackbacks

1.在网络通信中,由于网络拥挤或一次发送的数据量过大等原因,经常会发生交换的数据在短时间内不能传送完,收发数据的函数因此不能返回的现象,这种现象叫作阻塞。winsock对有可能阻塞的函数提供了两种处理方式--阻塞和非阻塞。在阻塞方式下,收发数据的函数在被调用后一直要到传送完毕或者出错才返回:在阻塞期间,除了等待网络操作的完成不能进行任何操作。对于非阻塞方式,函数被调用后立即返回;当网络操作传送完成后,有winsock给应用程序发送一个消息,通知操作完成,此时可以根据发送的消息传出的参数判断操作是否正常。
2.在编程时,应尽量使用非阻塞方式。因为在阻塞方式下,用户可能会因为长时间的等待而失去耐心继而关闭应用程序的主窗口,这样当网络操作的函数从winsock的动态链接库中返回时,主程序已经从内存中删除,可能会造成内存的异常。虽然现在的操作系统已经可以从系统级正确地处理这种内存问题,但还是建议读者关注这种情况的的发生。
3.windows Socket2与Windows Socket1.1两个版本向后兼容:源码和二进制代码。程序员要做的只是包含新的头文件winsock2.h和简单得ws2_32.lib地链接。具体如下:
winsock1.1:

1 #include  < winsock.h >
2 #pragma comment(lib, " wsock32.lib " )
3 或者
4 alt + f7 link -> wsock32.lib 

winsock2.0
1#include <winsock2.h>
2#pragma comment(lib,"ws2_32.lib")
3或者
4alt+f7 link->ws2_32.lib
posted on 2006-09-21 11:14 asdfastone 阅读(1842) 评论(0)  编辑 收藏 引用 所属分类: vc++6.0