Omnet++ 如何在OMNeT+中使用TCP协议在客户端和服务器之间发送数据包+;?
我正在OMNeT++软件中寻找TCP/IP协议的初始实现。我遇到的问题是,当computer1和computer2之间建立连接时,computer1充当客户端并希望发送名为volt的数据包,OMNeT++会显示消息 “不再发生事件-模拟在事件#52结束,t=0.5。” 谢谢你指导我解决这个问题。值得注意的是,代码附在本文末尾。我们还将OMNeT++版本4.4.1与INET 2.5.0一起使用 电脑1(客户)Omnet++ 如何在OMNeT+中使用TCP协议在客户端和服务器之间发送数据包+;?,omnet++,Omnet++,我正在OMNeT++软件中寻找TCP/IP协议的初始实现。我遇到的问题是,当computer1和computer2之间建立连接时,computer1充当客户端并希望发送名为volt的数据包,OMNeT++会显示消息 “不再发生事件-模拟在事件#52结束,t=0.5。” 谢谢你指导我解决这个问题。值得注意的是,代码附在本文末尾。我们还将OMNeT++版本4.4.1与INET 2.5.0一起使用 电脑1(客户) #包括 #包括 #包括“TCPSocket.h” #包括“IPvXAddressReso
#包括
#包括
#包括“TCPSocket.h”
#包括“IPvXAddressResolver.h”
#包括“UDPControlInfo_m.h”
#包括“Alireza_m.h”
使用名称空间std;
类COMP1:公共CSIMPLE模块
{
公众:
常量字符*连接地址;
int连接端口;
TCPSocket TCPSocket;
受保护的:
int localPort,destPort;
std::向量地址;
虚拟~COMP1();
虚拟整数numintstages()常量
{
返回4;
}
虚空初始化(int阶段);
虚空handleMessage(cMessage*msg);
};
定义_模块(COMP1);
void COMP1::初始化(int阶段)
{
如果(阶段!=3)
{
返回;
}
Alireza*pk=新的Alireza(“伏特”);
pk->setVoltX(5);
设置输出门(门(“tcpOut”);
tcpsocket.readDataTransferModePar(*this);
setDataTransferMode(TCP\u传输\u对象);
tcpsocket.bind(IPvXAddressResolver().resolve(“Computer1”),1001);
IPvXAddress destination=IPvXAddressResolver().resolve(“Computer2”);
connectPort=1002;
tcpsocket.connect(目的地,连接端口);
scheduleAt(simTime()+0.5,pk);
}
void COMP1::handleMessage(cMessage*msg)
{
电动汽车
#include <string.h>
#include <omnetpp.h>
#include "TCPSocket.h"
#include "IPvXAddressResolver.h"
#include "UDPControlInfo_m.h"
#include "Alireza_m.h"
using namespace std;
class COMP1: public cSimpleModule
{
public:
const char * connectAddress;
int connectPort;
TCPSocket tcpsocket;
protected:
int localPort, destPort;
std::vector<IPvXAddress> destAddresses;
virtual ~COMP1();
virtual int numInitStages() const
{
return 4;
}
virtual void initialize(int stage);
virtual void handleMessage(cMessage *msg);
};
Define_Module(COMP1);
void COMP1::initialize(int stage)
{
if (stage != 3)
{
return;
}
Alireza * pk=new Alireza("volt");
pk -> setVoltX(5);
tcpsocket.setOutputGate(gate("tcpOut"));
tcpsocket.readDataTransferModePar(*this);
tcpsocket.setDataTransferMode(TCP_TRANSFER_OBJECT);
tcpsocket.bind(IPvXAddressResolver().resolve("Computer1"), 1001);
IPvXAddress destination=IPvXAddressResolver().resolve("Computer2");
connectPort=1002;
tcpsocket.connect(destination, connectPort);
scheduleAt(simTime() +0.5, pk);
}
void COMP1::handleMessage(cMessage *msg)
{
ev << " I got a message Name=" << msg -> getName() << endl;
EV << " client received message \n " ;
IPvXAddress destAddr = IPvXAddressResolver().resolve(par("destAddresses"));
Alireza * pk=new Alireza("volt");
pk -> setVoltX(1);
tcpsocket.send(pk);
}
COMP1::~COMP1()
{
}
#include <string.h>
#include <omnetpp.h>
#include "TCPSocket.h"
#include "UDPSocket.h"
#include "IPvXAddressResolver.h"
#include "UDPControlInfo_m.h"
#include "Alireza_m.h"
using namespace std;
class COMP2: public cSimpleModule
{
public:
const char * connectAddress;
int connectPort;
TCPSocket tcpsocket;
protected:
int localPort, destPort;
std::vector<IPvXAddress> destAddresses;
virtual ~COMP2();
virtual int numInitStages() const
{
return 4;
}
virtual void initialize(int stage);
virtual void handleMessage(cMessage *msg);
};
Define_Module(COMP2);
void COMP2::initialize(int stage)
{
if (stage != 3)
{
return;
}
destPort = par("destPort");
localPort = par("localPort");
tcpsocket.setOutputGate(gate("tcpOut"));
tcpsocket.setDataTransferMode(TCP_TRANSFER_OBJECT);
tcpsocket.bind(IPvXAddressResolver().resolve("Computer2"), 1002);
tcpsocket.listen();
}
void COMP2::handleMessage(cMessage *msg)
{
ev << " I got a message Name=" << msg -> getName() << endl;
EV << " server received message \n" ;
}
COMP2::~COMP2()
{
}