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.

118 lines
2.9 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. #include "Simulation.h"
  11. int main(int argc, char *argv[])
  12. {
  13. /*
  14. * test puszczania sciezki external/internal
  15. 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");
  16. NATRouter n1("N1", "10.0.0.2", "255.255.255.0"), n2("N2", "10.0.0.1", "255.255.255.0");
  17. n1.setWanIp("8.8.8.8");
  18. n1.setWanMask("255.255.255.255");
  19. n2.setWanIp("8.8.4.4");
  20. n2.setWanMask("255.255.255.255");
  21. n1.connectNode(&k1);
  22. n2.connectNode(&k2);
  23. n2.connectNode(&n1, true);
  24. Packet pkt("TEST");
  25. pkt.setDstIp("10.0.0.2");
  26. pkt.setDstPort(1000);
  27. cout << "N2 Send: " << n2.send(pkt) << endl;
  28. cout << "Wywoluje onRecv() na N1" << endl;
  29. n1.onRecv();
  30. cout << "Wywoluje onRecv() na K2" << endl;
  31. k2.onRecv();
  32. exit(0);
  33. */
  34. Simulation sim;
  35. Node pc1("PC1", "10.0.0.2", "255.0.0.0", "10.0.0.1");
  36. pc1.setDelimiter("\t");
  37. pc1.setColor(CYAN);
  38. sim.print("initalizing thread");
  39. //sim.createThread("timer", &Simulation::timerHelper, &sim);
  40. //sim.createThread("nowa", &Simulation::threadWrapper, &sim.timer);
  41. //sim.createThread("test", dupa);
  42. sim.createThread("timer", SIM_TIMER, &sim);
  43. //sleep(5);
  44. sim.p2pSimulation();
  45. while(1);
  46. exit(0);
  47. /*
  48. cout << "Obiekt PC1" << endl;
  49. Node pc1("PC1", "10.0.0.2", "255.0.0.0", "10.0.0.1");
  50. cout << "Obiekt PC2" << endl;
  51. Node pc2("PC2", "10.0.0.3", "255.0.0.0", "10.0.0.1");
  52. cout << "Obiekt R1" << endl;
  53. NATRouter r1("R1", "10.0.0.1", "255.255.255.0");
  54. r1.setWanIp("83.11.254.254");
  55. r1.setWanMask("255.255.255.255");
  56. cout << "Podlaczam PC1, PC2 z R1" << endl;
  57. cout << r1.connectNode(&pc1) << endl;
  58. cout << r1.connectNode(&pc2) << endl;
  59. cout << "Obiekt S" << endl;
  60. Node s("Serwer", "8.8.8.8", "255.255.255.255");
  61. s.connectNode(&r1, true);
  62. cout << "Tworze pakiet i adresuje go do PC2" << endl;
  63. Packet p("piekna wiadomosc");
  64. p.setDstIp("10.0.0.3");
  65. p.setDstPort(80);
  66. cout << "Wysylam wiadomosc z PC1: ";
  67. cout << pc1.send(p) << endl;
  68. cout << "Wywoluje onRecv() na R1 <-- pelni funkcje switcha" << endl;
  69. r1.onRecv();
  70. cout << "Wywoluje onRecv() na PC2" << endl;
  71. pc2.onRecv();
  72. cout << "Adresuje pakiet do serwera" << endl;
  73. p.setDstIp("8.8.8.8");
  74. p.setDstPort(80);
  75. p.setMsg("to wiadomosc do serwera!");
  76. cout << "Wysylam wiadomosc z PC1: ";
  77. cout << pc1.send(p) << endl;
  78. cout << "Wywoluje onRecv() na R1 <-- pelni funkcje SNAT" << endl;
  79. r1.onRecv();
  80. cout << "Wywoluje onRecv() na serwerze" << endl;
  81. s.onRecv();
  82. cout << "Serwer generuje odpowiedz (tymczasowo, poki nie ma swojej klasy)" << endl;
  83. Packet rp("Odpowiedz z serwera do PC1");
  84. rp.setDstIp("83.11.254.254");
  85. rp.setDstPort(1);
  86. cout << "Wysylam wiadomosc z serwera: ";
  87. cout << s.send(rp) << endl;
  88. cout << "Wywoluje onRecv() na R1 <-- pelni funkcje DNAT" << endl;
  89. r1.onRecv();
  90. cout << "Wywoluje onRecv() na PC1" << endl;
  91. pc1.onRecv();
  92. */
  93. return 0;
  94. }