Exemplo simples de socket em C/C++

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

[ Hits: 11.208 ]

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

Manipulação de um vetor de registros

Stack (LIFO)

Arvores Red Black

Jantar dos Filósofos - Programação Paralela

Sistemas Numericos


  

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