套接字模式—阻塞模式开发

1、阻塞模式概念

     当使用socket()函数和WSASocket()函数创建的套接字时,默认都是阻塞模式的。阻塞模式是指套接字在执行操作时,调用函数在没有完成操作之前不会立即返回的工作模式。这意味着当调用Windows Sockets API不能立即完成时,线程处于等待窗台,直到操作完成。

 模式

     并不是所有的Windows Sockets API以阻塞套接字为参数调用都会发生阻塞。例如,以阻塞模式的套接字为参数调用bind()、listen()时,函数会立即返回。这里将可能阻塞套接字的Windows Sockets API调用分为以下四种:

     A、输入操作

          recv()、recvfrom()、WSARecv()、WSARecvfrom()函数。以阻塞套接字模式为参数调用这些函数接受数据,如果此时套接字缓冲区没有数据可读,则调用线程在数据到来前一直睡眠。

     B、输出操作

          send()、sendto()、WSASend()、WSASendto()函数。以阻塞套接字模式为参数调用这些函数发送数据,如果套接字缓冲区没有可用空间,线程会一直睡眠,直到有空间。

     C、接受连接

          accept()、WSAAcept()函数。以阻塞套接字模式为参数调用这些函数,将等待 接受对方连接请求,如果此时没有连接请求,线程就会进入睡眠状态。

     D、外出连接

          connect()、WSAConnect()函数。对于TCP连接,客户端以阻塞套接字为参数,调用这些函数向服务器发连接。该函数在收到服务器的应答前,不会返回。这意味着TCP连接总会等待至少从客户端到服务器的一次往返的时间。

 

2、阻塞模式的优势与不足

     使用阻塞模式的套接字开发网络程序比较简单,容易实现。当希望能够立即发送和接受数据,且处理的套接字数量较少的情况下。使用阻塞套接字模式来开发网络程序比较合适。

     而不足之处表现为,在大量建立好的套接字线程之间进行通讯时比较困难。当希望同时处理大量套接字时,将无从下手,扩展性差。

 

3、C++源码

     将书本上本章节的理论知识认真的看了半个晚上,被过滤一下也就只有这么多了。看源码也许会更容易理解吧!

     (短短两三五百行代码,居然敲了近两个小时,实在不敢恭维打字速度....)

 

 

4、程序运行效果

     源代码在VC6.0 + WIN XP SP2环境下编程运行正常:

     效果

 

5、源代码下载地址

     http://download.csdn.net/source/1679786

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪宁宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值