Stefan_Lang
Я предлагаю сначала реализовать реальную вещь, прежде чем пытаться имитировать. Если вы не понимаете, какая функциональность вам нужна, чтобы заставить его работать, нет смысла писать симуляцию.
В зависимости от того, о какой сети вы думаете, попробуйте поискать в google примеры кода.
Как только вы знаете, что вам нужно, напишите класс (interface), который предоставляет все необходимые функции, а затем выведите из него класс реализации, который переопределяет эти функции с моделируемым поведением. То, как это поведение должно выглядеть, зависит от того, что вы хотите смоделировать.
Вот базовый дизайн на языке C++:
#include <iostream>
#include <string>
class NetworkBase {
public:
virtual ~NetworkBase() {}
virtual int connect(const std::string& address) = 0;
virtual int send(const std::string& message) = 0;
virtual std::string receive() = 0;
virtual int disconnect() = 0;
};
class NetworkSimulation : public NetworkBase {
private:
int state_;
std::string address_;
public:
NetworkSimulation() : state_(0) {}
virtual ~NetworkSimulation() {}
virtual int connect(const std::string& address) {
if (address.empty())
return -1; // error!
address_ = address;
state_ = 1;
return 0; // succcess
}
virtual int send(const std::string& message) {
std::cout << "Sending new message to " << address_ << ": " << message<< std::endl;
return (int)message.size();
}
virtual std::string receive() {
std::string msg;
std::cout << "Reading message from " << address_ << std::endl;
std::getline(std::cin, msg);
std::cout << "Message received from " << address_ << ": " << msg << std::endl;
return msg;
}
virtual int disconnect() {
if (state_ == 0)
return -1; // error!
address_.clear();
state_ = 0;
return 0; // succcess
}
};
int main()
{
NetworkBase* my_network = new NetworkSimulation;
std::string address("there");
int error = my_network->connect(address);
if (error != 0) {
std::cout << "Not connected to " << address << std::endl;
}
else {
int msg_size = my_network->send("Hello");
if (msg_size == 0) {
std::cout << "Error sending message to " << address << std::endl;
}
std::string msg = my_network->receive();
std::cout << "Message received from " << address << ": " << msg << std::endl;
error = my_network->disconnect();
if (error != 0) {
std::cout << "Error disconnecting from " << address << std::endl;
}
}
delete my_network;
return 0;
}