Advertisement
Guest User

Untitled

a guest
Nov 24th, 2014
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.22 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. #include <sys/types.h>
  6. #include <sys/socket.h>
  7. #include <netinet/in.h>
  8.  
  9. #define PORTA 8082
  10.  
  11. /*
  12. * Servidor para aceitar comunicação com Cliente
  13. * Parametros necessários: NENHUM
  14. */
  15.  
  16. void error(const char *msg);
  17.  
  18. int main(int argc, char *argv[]) {
  19.  
  20.     // Variaveis do Servidor
  21.     int sockfd, newsockfd, portno, n;
  22.     socklen_t clilen;
  23.     char buffer[256];
  24.     struct sockaddr_in serv_addr, cli_addr;
  25.      
  26.     // Obtendo porta padrão ou por argumento
  27.     if (argc < 2)
  28.         portno = PORTA;
  29.     else
  30.         portno = atoi(argv[1]);
  31.      
  32.     // Ativando o socket
  33.     sockfd = socket(AF_INET, SOCK_STREAM, 0);
  34.     if (sockfd < 0)
  35.        error("Erro, não foi possivel ativar o socket");
  36.      
  37.      
  38.     bzero((char *) &serv_addr, sizeof(serv_addr));
  39.     serv_addr.sin_family = AF_INET;
  40.     serv_addr.sin_addr.s_addr = INADDR_ANY;
  41.     serv_addr.sin_port = htons(portno);
  42.    
  43.     if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) {
  44.         error("Erro, não foi possivel fazer a bindagem, escolha outra porta");
  45.     }
  46.        
  47.        
  48.     listen(sockfd,5);
  49.     printf("---------------------------------\n");
  50.     printf("Servidor iniciado com sucesso!\n");
  51.     printf("Porta: %d \n", portno);
  52.     printf("---------------------------------\n");
  53.    
  54.     // Aceitando conexões
  55.     clilen = sizeof(cli_addr);
  56.     newsockfd = accept(sockfd,(struct sockaddr *) &cli_addr,&clilen);
  57.        
  58.     // Conexão estabilizada, recebendo mensagens
  59.     while(newsockfd>0){
  60.    
  61.         bzero(buffer,256);
  62.         n = read(newsockfd,buffer,255);
  63.  
  64.              
  65.         // Imprime mensagem
  66.         printf(" MSG: %s\n",buffer);
  67.            
  68.      
  69.         // Verificando resposta  
  70.         n = write(newsockfd,"(OK)\n",8);
  71.         if (n < 0)
  72.             error("(ERRO->Resposta não recebida)");
  73.         else
  74.             printf("(OK->Resposta recebida)");
  75.      }
  76.      
  77.      if (newsockfd < 0)
  78.         error("Erro ao aceitar o Socket ");
  79.      
  80.      // Fechando conexões e encerrando o programa
  81.      close(newsockfd);
  82.      close(sockfd);
  83.      return 0;
  84. }
  85.  
  86. void error(const char *msg) {
  87.  
  88.     printf("%s", msg);
  89.     exit(1);
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement