Omnet++ 如何在OMNeT+中使用TCP协议在客户端和服务器之间发送数据包+;?

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

我正在OMNeT++软件中寻找TCP/IP协议的初始实现。我遇到的问题是,当computer1和computer2之间建立连接时,computer1充当客户端并希望发送名为volt的数据包,OMNeT++会显示消息

“不再发生事件-模拟在事件#52结束,t=0.5。”

谢谢你指导我解决这个问题。值得注意的是,代码附在本文末尾。我们还将OMNeT++版本4.4.1与INET 2.5.0一起使用

电脑1(客户)

#包括
#包括
#包括“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()
{
}