OMOSSocket 类

OMOSSocket 类表示用于在 Rational® Rhapsody® 与受检测应用程序之间传递数据的套接字。

OMOSSocket 通常用于动画用途,但还可以用于其他连接,前提是您必须提供主机名和端口号。OMOSSocket 表示连接的客户机端,并假定网络中的某个地方有一台服务器正在侦听该连接。您可以修改 OMOSSocket 类的定义,以便从相关位置除去 _OMINSTRUMENT 宏定义,从而提供不受检测配置的套接字实现。另外,您可能还需要在 MakeFileContent 特性内将 SOCK_LIB 宏的定义修改为类似于用于跟踪和动画的宏定义。

如果动画会话似乎被挂起,那么原因可能是在 Rational Rhapsody 与应用程序之间传递的大量消息导致套接字的内部缓冲区被填满,这可能会导致 Rational Rhapsody 与应用程序之间的通信出现严重延迟。此问题的解决方案是,增大套接字内部缓冲区的大小(缺省情况下,此大小为 8 KB)。例如,在 Windows NT 实现中,您可以向 NTSocketCreate() 函数添加以下代码:

int NTSocket::Create(
   const char* SocketAddress /*= NULL*/, 
   unsigned int nSocketPort /*= 0*/)
   {
      ... 
      if ((theSock = socket(AF_INET, SOCK_STREAM, proto))
       == INVALID_SOCKET) 
      {
         NOTIFY_TO_ERROR("Could not create socket\n");
         theSock = 0;
         return 0;
      } 
      int internalBufferSizes = 64 * 1024; // 64k
      setsockopt(theSock, SOL_SOCKET, SO_RCVBUF,
         (char*) &internalBufferSizes, sizeof(int));
      setsockopt(theSock, SOL_SOCKET, SO_SNDBUF,
         (char*) &internalBufferSizes, sizeof(int));
      ... 
   }
注: 仅针对 Windows NT 系统对此解决方案进行了检查。
构造概要
~OMOSSocket
销毁 OMOSSocket 对象
方法概要
Close
关闭套接字
Create
创建新的套接字
Receive
通过套接字接收数据
Send
通过套接字发送数据

反馈