/* * Main.cpp * * Created on: 07-01-2017 * Author: Piotr Dergun */ #include "common.h" #include "Node.h" #include "NATRouter.h" int main(int argc, char *argv[]) { /* * test puszczania sciezki external/internal Node k1("K1", "10.0.0.5", "255.255.255.0", "10.0.0.2"), k2("K2", "10.0.0.2", "255.255.255.0", "10.0.0.1"); NATRouter n1("N1", "10.0.0.2", "255.255.255.0"), n2("N2", "10.0.0.1", "255.255.255.0"); n1.setWanIp("8.8.8.8"); n1.setWanMask("255.255.255.255"); n2.setWanIp("8.8.4.4"); n2.setWanMask("255.255.255.255"); n1.connectNode(&k1); n2.connectNode(&k2); n2.connectNode(&n1, true); Packet pkt("TEST"); pkt.setDstIp("10.0.0.2"); pkt.setDstPort(1000); cout << "N2 Send: " << n2.send(pkt) << endl; cout << "Wywoluje onRecv() na N1" << endl; n1.onRecv(); cout << "Wywoluje onRecv() na K2" << endl; k2.onRecv(); exit(0); */ cout << "Obiekt PC1" << endl; Node pc1("PC1", "10.0.0.2", "255.0.0.0", "10.0.0.1"); cout << "Obiekt PC2" << endl; Node pc2("PC2", "10.0.0.3", "255.0.0.0", "10.0.0.1"); cout << "Obiekt R1" << endl; NATRouter r1("R1", "10.0.0.1", "255.255.255.0"); r1.setWanIp("83.11.254.254"); r1.setWanMask("255.255.255.255"); cout << "Podlaczam PC1, PC2 z R1" << endl; cout << r1.connectNode(&pc1) << endl; cout << r1.connectNode(&pc2) << endl; cout << "Obiekt S" << endl; Node s("Serwer", "8.8.8.8", "255.255.255.255"); s.connectNode(&r1, true); /* * zastapilem to polaczenie bezposrednie * polaczeniem przez router (a'la switch) cout << "Lacze PC1 z PC2" << endl; cout << pc1.connectNode(&pc2) << endl; cout << "Lacze PC1 z PC2 (ponownie)" << endl; cout << pc1.connectNode(&pc2) << endl; */ cout << "Tworze pakiet i adresuje go do PC2" << endl; Packet p("piekna wiadomosc"); p.setDstIp("10.0.0.3"); p.setDstPort(80); cout << "Wysylam wiadomosc z PC1: "; cout << pc1.send(p) << endl; cout << "Wywoluje onRecv() na R1 <-- pelni funkcje switcha" << endl; r1.onRecv(); cout << "Wywoluje onRecv() na PC2" << endl; pc2.onRecv(); cout << "Adresuje pakiet do serwera" << endl; p.setDstIp("8.8.8.8"); p.setDstPort(80); p.setMsg("to wiadomosc do serwera!"); cout << "Wysylam wiadomosc z PC1: "; cout << pc1.send(p) << endl; cout << "Wywoluje onRecv() na R1 <-- pelni funkcje SNAT" << endl; r1.onRecv(); cout << "Wywoluje onRecv() na serwerze" << endl; s.onRecv(); cout << "Serwer generuje odpowiedz (tymczasowo, poki nie ma swojej klasy)" << endl; Packet rp("Odpowiedz z serwera do PC1"); rp.setDstIp("83.11.254.254"); rp.setDstPort(1); cout << "Wysylam wiadomosc z serwera: "; cout << s.send(rp) << endl; cout << "Wywoluje onRecv() na R1 <-- pelni funkcje DNAT" << endl; r1.onRecv(); cout << "Wywoluje onRecv() na PC1" << endl; pc1.onRecv(); return 0; }