Exemplo simples de socket em C/C++

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

[ Hits: 964 ]

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

Tabuada com QT4

Biblioteca math.h

Script MakePach para correção de platarforma 32 bits para 64

[C] POSIX Threads

Ponteiro para Ponteiro para Ponteiro


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts