Advertisement
zielo

serv_poprawiony

Jun 26th, 2018
472
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.71 KB | None | 0 0
  1. #include <iostream>
  2. #include <sys/socket.h>
  3. #include <netinet/in.h>
  4. #include <cstring>
  5. #include <unistd.h>
  6.  
  7. #define PORT 6666
  8. #define SERV 127.0.0.1
  9.  
  10. void err(const char *s)
  11. {
  12.     perror(s);
  13.     exit(1);
  14. }
  15.  
  16. using namespace std;
  17.  
  18. int main()
  19. {
  20.     int sock_fd,new_sock,val;
  21.     struct sockaddr_in s_addr;
  22.     int addrlen = sizeof(s_addr);
  23.     char buffer[255] = {0};
  24.     char *hi = (char*)"Witamy na serwerze!\nNapis 'bye' konczy transmisje\n";
  25.     char *bye = (char*)"Do nastepnego razu!\n";
  26.     char *ok = (char*)"Przyjalem!\n";
  27.     sock_fd = socket(AF_INET, SOCK_STREAM, 0); // tworzymy gniazdo IPV4, TCP
  28.     if (sock_fd < 1) err("Blad otwierania gniazda!");
  29.     s_addr.sin_family = AF_INET; //ipv4
  30.     s_addr.sin_addr.s_addr = INADDR_ANY; // aktualny adres IP
  31.     s_addr.sin_port = htons(PORT); //na sieciowy porzadek bajtow
  32.     if (bind(sock_fd, (struct sockaddr *)&s_addr,sizeof(s_addr)) < 0)
  33.         err("Blad podpinania portu");
  34.     listen(sock_fd,3); //kolejka ustawiona na 3
  35.     new_sock = accept(sock_fd, (struct sockaddr *)&s_addr,(socklen_t*)&addrlen); //polaczenie
  36.     if (new_sock < 0) err("Blad akceptowania polaczen");
  37.  
  38.     send(new_sock, hi, strlen(hi),0); //wysylamy przywitanie
  39.     do{
  40.         bzero(buffer,sizeof(buffer));  //zeruje bufor
  41.         val = recv(new_sock,buffer,sizeof(buffer),0);
  42.         if (val<0) err("Blad odczytu z gniazda");
  43.         send(new_sock, ok, strlen(ok),0);
  44.         cout << "Otrzymano wiadomosc: " << buffer;
  45.  
  46.     } while (buffer[0] != 'b' || buffer[1] != 'y' || buffer[2] != 'e'); //czytamy, chyba, ze "bye"
  47.     send(new_sock, bye, strlen(bye),0); //papa
  48.     close(new_sock); //zamykamy polaczenie
  49.     close(sock_fd);  //gniazdo tez
  50.     return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement