如何在 omnet++ 中通过 TCPBasicClientApp 接收消息?
How to receive a message through TCPBasicClientApp in omnet++?
我在 Omnet++ 中制作了两个不同的 TCP 应用程序,一个是 TCPBasicClientApp
,另一个是 TCPGenericServerApp
。 TCP 客户端应用程序正在通过 TCP 协议成功发送 GenericAppMsg
。一旦在服务器端接收到消息(具有特定的 replyLength
),它就会通过 SendBack()
方法(在 inet 示例应用程序中也提到)将其发送回客户端。
我的问题是,如何在客户端接收回这条消息?
这里是omnet.ini文件代码,对于这次传输,
客户端,
**.host[0].numTcpApps = 1
**.host[0].tcpApp[0].typename = "ReputationAlgorithmApplication"
**.host[0].tcpApp[0].localAddress = ""
**.host[0].tcpApp[0].localPort = -1
**.host[0].tcpApp[0].connectAddress = "host[3]"
**.host[0].tcpApp[0].connectPort = 2000
**.host[0].tcpApp[0].dataTransferMode = "object"
服务器端,
**.host[3].numTcpApps = 1
**.host[3].tcpApp[*].typename = "ReputationServerApplication"
**.host[3].tcpApp[*].localAddress = "host[3]"
**.host[3].tcpApp[*].localPort = 2000
这是服务器端的sendBack方法,
void ReputationServerApplication::sendBack(cMessage *msg) {
cPacket *packet = dynamic_cast<cPacket *>(msg);
if (packet) {
msgsSent++;
bytesSent += packet->getByteLength();
emit(sentPkSignal, packet);
EV_INFO << "sending \"" << packet->getName() << "\" to TCP, "
<< packet->getByteLength() << " bytes\n";
} else {
EV_INFO << "sending \"" << msg->getName() << "\" to TCP\n";
}
DummyMessageForReputation *msgDum =
dynamic_cast<DummyMessageForReputation *>(msg);
std::cout << "\n Tested: Message with the string "
<< msgDum->getMessageString() << " is sending back to "
<< msgDum->getNodeName();
send(msgDum, "tcpOut");
}
如有任何帮助,我们将不胜感激。
您可以使用TCPBasicClientApp::socketDataArrived()
在客户端处理收到的消息。
我在 Omnet++ 中制作了两个不同的 TCP 应用程序,一个是 TCPBasicClientApp
,另一个是 TCPGenericServerApp
。 TCP 客户端应用程序正在通过 TCP 协议成功发送 GenericAppMsg
。一旦在服务器端接收到消息(具有特定的 replyLength
),它就会通过 SendBack()
方法(在 inet 示例应用程序中也提到)将其发送回客户端。
我的问题是,如何在客户端接收回这条消息?
这里是omnet.ini文件代码,对于这次传输,
客户端,
**.host[0].numTcpApps = 1
**.host[0].tcpApp[0].typename = "ReputationAlgorithmApplication"
**.host[0].tcpApp[0].localAddress = ""
**.host[0].tcpApp[0].localPort = -1
**.host[0].tcpApp[0].connectAddress = "host[3]"
**.host[0].tcpApp[0].connectPort = 2000
**.host[0].tcpApp[0].dataTransferMode = "object"
服务器端,
**.host[3].numTcpApps = 1
**.host[3].tcpApp[*].typename = "ReputationServerApplication"
**.host[3].tcpApp[*].localAddress = "host[3]"
**.host[3].tcpApp[*].localPort = 2000
这是服务器端的sendBack方法,
void ReputationServerApplication::sendBack(cMessage *msg) {
cPacket *packet = dynamic_cast<cPacket *>(msg);
if (packet) {
msgsSent++;
bytesSent += packet->getByteLength();
emit(sentPkSignal, packet);
EV_INFO << "sending \"" << packet->getName() << "\" to TCP, "
<< packet->getByteLength() << " bytes\n";
} else {
EV_INFO << "sending \"" << msg->getName() << "\" to TCP\n";
}
DummyMessageForReputation *msgDum =
dynamic_cast<DummyMessageForReputation *>(msg);
std::cout << "\n Tested: Message with the string "
<< msgDum->getMessageString() << " is sending back to "
<< msgDum->getNodeName();
send(msgDum, "tcpOut");
}
如有任何帮助,我们将不胜感激。
您可以使用TCPBasicClientApp::socketDataArrived()
在客户端处理收到的消息。