找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4005|回复: 2

Proactor框架发送信息时出错error=9

[复制链接]
发表于 2008-7-13 22:52:16 | 显示全部楼层 |阅读模式
使用proactor框架编程,其中有一段代码如下:
void Sender::handle_write_stream (const ACE_Asynch_Write_Stream::Result &result)
{
  ACE_DEBUG ((LM_DEBUG,"Sender::handle_write_stream called\n"));
  // Reset pointers.
  result.message_block ().rd_ptr (result.message_block ().rd_ptr () - result.bytes_transferred ());
ACE_DEBUG ((LM_DEBUG, "(%t)********************\n"));
  ACE_DEBUG ((LM_DEBUG, "%s = %d\n", "bytes_to_write",result.bytes_to_write ()));
ACE_DEBUG ((LM_DEBUG, "%s = %d\n", "handle", result.handle ()));
ACE_DEBUG ((LM_DEBUG, "%s = %d\n", "bytes_transfered",result.bytes_transferred ()));
ACE_DEBUG ((LM_DEBUG, "%s = %d\n", "act", (u_long) result.act ()));
  ACE_DEBUG ((LM_DEBUG, "%s = %d\n", "success", result.success ()));
ACE_DEBUG ((LM_DEBUG, "%s = %d\n", "completion_key", (u_long)result.completion_key ()));
  ACE_DEBUG ((LM_DEBUG, "%s = %d\n", "error", result.error ()));
ACE_DEBUG ((LM_DEBUG, "(%t)********************\n"));
}
执行时再连接A服务器,断开再连接B服务器,发送消息时会出现error=9的错误
请问:会是什么原因?
另:error=9这个错误可以在哪里找到解释?
在文档中我只找到了error()的解释:Return error value. 不知去哪里找9是什么错误。
谢谢
 楼主| 发表于 2008-7-13 22:52:33 | 显示全部楼层
你可以查下/usr/include/sys/errno.h
印象中errno比较小的几个在各个unix系统定义都是一样的
#define EBADF 9 /* Bad file number   */
可能是使用了回收的套接字进行消息发送
 楼主| 发表于 2008-7-13 22:52:44 | 显示全部楼层
问题已经解决了,问题很简单,但是找了很久,原因是未在建立第二个连接前调用ACE_OS::closesocket();
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-22 22:46 , Processed in 0.021014 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表