Symulacja NAT na przedmiot Symulacje Komputerowe
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.0 KiB

7 years ago
  1. /*
  2. * Main.cpp
  3. *
  4. * Created on: 07-01-2017
  5. * Author: Piotr Dergun
  6. */
  7. #include "common.h"
  8. #include "Node.h"
  9. #include "NATRouter.h"
  10. int main(int argc, char *argv[])
  11. {
  12. cout << "Obiekt PC1" << endl;
  13. Node pc1("PC1", "10.0.0.2", "255.0.0.0", "10.0.0.1");
  14. cout << "Obiekt PC2" << endl;
  15. Node pc2("PC2", "10.0.0.3", "255.0.0.0", "10.0.0.1");
  16. cout << "Obiekt R1" << endl;
  17. NATRouter r1("R1", "10.0.0.1", "255.255.255.0");
  18. r1.setWanIp("83.11.254.254");
  19. r1.setWanMask("255.255.255.255");
  20. cout << "Podlaczam PC1, PC2 z R1" << endl;
  21. cout << r1.connectNode(&pc1) << endl;
  22. cout << r1.connectNode(&pc2) << endl;
  23. cout << "Obiekt S" << endl;
  24. Node s("Serwer", "8.8.8.8", "255.255.255.255");
  25. s.connectNode(&r1);
  26. /*
  27. * zastapilem to polaczenie bezposrednie
  28. * polaczeniem przez router (a'la switch)
  29. cout << "Lacze PC1 z PC2" << endl;
  30. cout << pc1.connectNode(&pc2) << endl;
  31. cout << "Lacze PC1 z PC2 (ponownie)" << endl;
  32. cout << pc1.connectNode(&pc2) << endl;
  33. */
  34. cout << "Tworze pakiet i adresuje go do PC2" << endl;
  35. Packet p("piekna wiadomosc");
  36. p.setDstIp("10.0.0.3");
  37. p.setDstPort(80);
  38. cout << "Wysylam wiadomosc z PC1: ";
  39. cout << pc1.send(p) << endl;
  40. cout << "Wywoluje onRecv() na R1 <-- pelni funkcje switcha" << endl;
  41. r1.onRecv();
  42. cout << "Wywoluje onRecv() na PC2" << endl;
  43. pc2.onRecv();
  44. cout << "Adresuje pakiet do serwera" << endl;
  45. p.setDstIp("8.8.8.8");
  46. p.setDstPort(80);
  47. p.setMsg("to wiadomosc do serwera!");
  48. cout << "Wysylam wiadomosc z PC1: ";
  49. cout << pc1.send(p) << endl;
  50. cout << "Wywoluje onRecv() na R1 <-- pelni funkcje SNAT" << endl;
  51. r1.onRecv();
  52. cout << "Wywoluje onRecv() na serwerze" << endl;
  53. s.onRecv();
  54. cout << "Serwer generuje odpowiedz (tymczasowo, poki nie ma swojej klasy)" << endl;
  55. Packet rp("Odpowiedz z serwera do PC1");
  56. rp.setDstIp("83.11.254.254");
  57. rp.setDstPort(1);
  58. cout << "Wysylam wiadomosc z serwera: ";
  59. cout << s.send(rp) << endl;
  60. cout << "Wywoluje onRecv() na R1 <-- pelni funkcje DNAT" << endl;
  61. r1.onRecv();
  62. cout << "Wywoluje onRecv() na PC1" << endl;
  63. pc1.onRecv();
  64. return 0;
  65. }