ACE_Stream中的recv_n和send_n
来源:互联网 发布:人工智能eliza的结局 编辑:程序博客网 时间:2024/05/31 13:14
ACE_Stream中提供recv_n函数,该函数要求输入参数len表示要接受的字节数。
当代码中调用该函数时,程序会一直阻塞在recv_n函数调用的地方,只到recv_n对应的描叙符接收到了len个字节或者连接断开。
recv_n代码:
ACE::recv_n_i (ACE_HANDLE handle,
void *buf,
size_t len,
int flags,
size_t *bt)
{
size_t temp;
size_t &bytes_transferred = bt == 0 ? temp : *bt;
ssize_t n;
for (bytes_transferred = 0;
bytes_transferred < len;
bytes_transferred += n)
{
// Try to transfer as much of the remaining data as possible.
n = ACE_OS::recv (handle,
static_cast <char *> (buf) + bytes_transferred,
len - bytes_transferred,
flags);
// Check EOF.
if (n == 0)
return 0;
// Check for other errors.
if (n == -1)
{
// Check for possible blocking.
if (errno == EWOULDBLOCK)
{
// Wait for the blocking to subside.
int const result = ACE::handle_read_ready (handle, 0);
// Did select() succeed?
if (result != -1)
{
// Blocking subsided. Continue data transfer.
n = 0;
continue;
}
}
// Other data transfer or select() failures.
return -1;
}
}
return static_cast<ssize_t> (bytes_transferred);
}
- ACE_Stream中的recv_n和send_n
- 自己写的send_n()、recv_n()
- c#中的'&'和'&&','|'和'||'
- linux中的&&和&,|和||
- javascript中的+和C#中的+
- Windows中的\和Java中的\
- 编程中的++和--
- 宏定义中的## 和#
- define 中的#,##和#@
- Bash中的&& 和 || 用法
- SQL Server 中的''和' '
- OGNL中的#、%和$符号
- OGNL表达式中的#、%和$
- Ibatis中的#和$区别
- Ksh中的$*和$@
- Shell中的&&、||、()和{}
- String中的“+”和StringBuilder
- 页面中的&和&;
- 解决ubuntu字体模糊问题
- 【思考比传道更重要】
- 感叹一下
- spring 控制反转与依赖注入原理
- 浅谈文字编码和Unicode(上)
- ACE_Stream中的recv_n和send_n
- 【捞】明朝灭亡的经济原因
- 浅谈文字编码和Unicode(下)
- 关于灰鸽子配置服务端出错的问题!
- oracle创建表空间
- 字符转换
- Android访问WCF服务
- the third 实训课
- TOMCAT