Exemplo simples de socket em C/C++

Publicado por kenneth de oliveira (última atualização em 07/02/2018)

[ Hits: 10.928 ]

Homepage: https://br.linkedin.com/in/kenneth-de-oliveira/

Download 6762.socket.c




Apenas uma breve demonstração simples do assunto sockets em C/C++

  



Esconder código-fonte

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<unistd.h>
/*headrs para socket*/
#include<sys/socket.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/signal.h>
#include<arpa/inet.h>
#include<netdb.h>

#define PORT 2222 //nossa porta
#define LENGTH 4096

int main(void)
{
struct sockaddr_in local;
struct sockaddr_in remoto;

 int socketd, meucliente, cliente, slen;
 char buffer[4096];

 socketd = socket(AF_INET, SOCK_STREAM, 0);

 if(socketd == -1)
 {
 perror("\nSocketd error");
 exit(1);
 }
 else{
 printf("\nSocket realizado com sucesso!\n");
 }

 local.sin_family    =    AF_INET;
 local.sin_port      =    htons(PORT);
 memset(local.sin_zero,0x0,8);

 // bind() função que faz conexão do ip com a porta
 if(bind(socketd,(struct sockaddr *)&local,sizeof(local)) == -1)
 {
  perror("\nBind error");
  exit(1);
 }

//listen() função deixa seu servidor na escuta, no meu caso configuro para 2 conexão 
 listen(socketd,2);

//accept() função que faz conexão de seu socket com o do cliente
 meucliente = sizeof(remoto);
 if((cliente = accept(socketd,(struct sockaddr *)&remoto, &meucliente))==-1)
 {
  perror("\nAccept error");
  exit(1);
 }
 //função da #include<string.h> concatena s2 em s1
 strcpy(buffer,"Welcome cliente\n\0");

/*srlen() ler todos caractere de uma string
 send() funcão de mensagem
*/
 if(send(cliente,buffer,strlen(buffer),0))
 {
   printf("\nAguardando Mensagem do cliente...\n");
    memset(buffer, 0x0, LENGTH); //limpa buffer da mensagem
   while(1)
   { //recv função de mensagem
     if((recv(cliente,buffer,LENGTH,0)) > 0)
     {
     printf("\nMensagem recebida = %s\n", buffer);
     buffer[slen] = '\0';
     close(cliente);
     break;
     }
   }
 }
 printf("\nServidor encerrado!\n");
 close(socketd);

 return 0;
}

Scripts recomendados

Agenda feita em C usando árvore binária

Pilhas C/C++ - Analisador de expressões simples

Mudando Cor da Letra e Fundo de Tela

A tabuada em C!

Dangerous Tux Game com gráficos


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts