kokusz19

new server (not containing any bs I don't need)

Dec 11th, 2017
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.19 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #include <sys/types.h>
  6. #include <sys/socket.h>
  7.  
  8. #include <netinet/in.h>
  9.  
  10.  
  11.  
  12. int main(){
  13. //**********************************************************//
  14. //socket deklarációk, bind, listen
  15. int ellenor; //az ellenor változó a bind, listen, accept, send, recv fügvények visszatérési értékének tárolására szolgál
  16. int on = 1;
  17. int db = 2;
  18. int serversocket = socket (AF_INET, SOCK_STREAM, 0);
  19.  
  20. struct sockaddr_in serveraddress;
  21. serveraddress.sin_family = AF_INET;
  22. serveraddress.sin_port = htons(52369);
  23. serveraddress.sin_addr.s_addr = INADDR_ANY;
  24.  
  25. setsockopt(serversocket, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof on);
  26. setsockopt(serversocket, SOL_SOCKET, SO_KEEPALIVE, (char *)&on, sizeof on);
  27.  
  28. ellenor = bind(serversocket, (struct sockaddr *) &serveraddress, sizeof(serveraddress));
  29. if(ellenor==-1){
  30. printf("Bind error, a szerver leáll!\n");
  31. exit(0);
  32. }
  33.  
  34. ellenor = listen(serversocket, db);
  35. if(ellenor==-1){
  36. printf("Listen error, a szerver leáll!\n");
  37. exit(0);
  38. }
  39.  
  40. puts("A szerver a játékosok csatlakozására vár!");
  41. //**********************************************************//
  42. //kliens deklarációk, csatlakozások fogadása
  43. int i=0;
  44. int kliensek[db], aktiv[db], status[db]; //a a tömbök azonos indexelésű elemei összetartoznak a
  45. char uzenet[1000]; //kliensek tömb a játékosokat tárolja, az aktív tömb azt
  46. //h melyik játékos van még játékban, a status tömb h melyik
  47. //játékos következik vagy h ki esett-e már -1 ha kiesett,
  48. //0 ha nem ő jön, 1 ha ő jön
  49.  
  50. for(i; i<db; i++){ //a szerver sorban fogadja a csatlakozó játékosokat és elküldi hanyadikként csatlakoztak
  51. kliensek[i] = accept(serversocket, NULL, NULL);
  52. if(kliensek[i]==-1){
  53. printf("Accept error, a szerver leáll!\n");
  54. exit(0);
  55. }
  56. aktiv[i]=1;
  57. status[i]=0;
  58. printf("A(z) %d. számú játékos csatlakozott.\n", i+1);
  59. sprintf(uzenet, "%d", i+1);
  60. ellenor = send(kliensek[i], uzenet, sizeof(uzenet), 0);
  61. if(ellenor==-1){
  62. printf("Send error, a szerver leáll!\n");
  63. exit(0);
  64. }
  65. ellenor = recv(kliensek[i], &uzenet, sizeof(uzenet), 0);
  66. if(ellenor == -1){
  67. printf("Recive error, a szerver leáll! %d\n", ellenor);
  68. exit(0);
  69. }
  70. }
  71. //---------------------------------------------------------------------///
  72. //játék kezdése
  73. puts("A játékosok csatlakoztak, a játék elindul.");
  74. int j;
  75. int kezdes=1; //a kezdes változó értéke amíg nincs meg a kezdőszó
  76. char utolso[1000];
  77. while(1 < summa(aktiv, db)) //amíg legalább 2 játékos van addig ismétlődik a ciklus
  78. {
  79. for(int i=0; i<db; i++)
  80. {
  81. ellenor = send(kliensek[i], uzenet, sizeof(uzenet), 0);
  82. if(ellenor==-1){
  83. printf("Send error, a szerver leáll!\n");
  84. exit(0);
  85. }
  86.  
  87.  
  88.  
  89. ellenor = recv(kliensek[i], &uzenet, sizeof(uzenet), 0);
  90. if(ellenor == -1){
  91. printf("Recive error, a szerver leáll!\n");
  92. exit(0);
  93. }
  94. //ide jön a kiértékelés
  95.  
  96.  
  97. }
  98. }
  99. //---------------------------------------------------------------------///
  100. //eredmények elküldése
  101. i = 888 //i értéke legyen a nyertes indexe
  102.  
  103. for(j=0; j<db; j++){ //az i változó az itolsó aktív játékos indexét tartalmazza ezért az utolsó üzenetben az i+1 számot küldi el
  104. sprintf(uzenet, "%d", i+1);
  105. ellenor = send(kliensek[j], uzenet, sizeof(uzenet), 0);
  106. if(ellenor==-1){
  107. printf("Send error, a szerver leáll!\n");
  108. exit(0);
  109. }
  110. ellenor = recv(kliensek[j], &uzenet, sizeof(uzenet), 0);
  111. if(ellenor == -1){
  112. printf("Recive error, a szerver leáll!\n");
  113. exit(0);
  114. }
  115. }
  116. printf("A(z) %d. számú játékos nyert\n", atoi(uzenet));
  117. //---------------------------------------------------------------------///
  118. //Lezárás
  119. puts("A szerver leáll!");
  120. for(i; i<db; i++)
  121. close(kliensek[i]);
  122.  
  123. return 0;
  124. }
Add Comment
Please, Sign In to add comment