OMOSSocket 類別代表透過其在 Rational® Rhapsody® 與設備測試應用程式之間傳遞資料的 Socket。
OMOSSocket 通常用於動畫,但它還可以用於其他連線,只要您提供主機名稱及埠號即可。 OMOSSocket 代表連線的用戶端,並假設在網路的某個位置,存在接聽該連線的伺服器。 您可以修改 OMOSSocket 類別的定義,以從相關位置移除 _OMINSTRUMENT 巨集定義,以提供非設備測試配置的 Socket 實作。 此外,您還可能需要將 MakeFileContent 內容中的 SOCK_LIB 巨集定義,修改為類似於用於追蹤及動畫的定義。
如果動畫階段作業看起來可能停滯,則這可能是因為在 Rational Rhapsody 與應用程式之間傳遞了大量訊息,導致 Socket 的內部緩衝區已填滿,這可能會引起 Rational Rhapsody 與應用程式之間的主要延遲。 此問題的解決方案是增加 Socket 內部緩衝區的大小,依預設為 8K。例如,在 Windows NT 實作中,您可以將下列程式碼新增至 NTSocket 的 Create() 函數:
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));
...
}