Exemplo simples de socket em C/C++

Publicado por Kenneth Oliveira (última atualização em 07/02/2018)

[ Hits: 1.680 ]

Homepage: nenhum

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

Sistema básico de cadastro usando Listas Encadeadas

Driver tgz

Stack (LIFO)

Leds da porta paralela com interface

A tabuada em C!


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts