Exemplo simples de socket em C/C++
Publicado por kenneth de oliveira (última atualização em 07/02/2018)
[ Hits: 11.657 ]
Homepage: https://br.linkedin.com/in/kenneth-de-oliveira/
Apenas uma breve demonstração simples do assunto sockets em C/C++
#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;
}
Rotina para controle de portas paralelas em C. (biblioteca LP.h)
Jogo Windows Invaders (com gráficos)
Script para trocar o papel de parede do fluxbox em GTK
Thread, Courses, Shell e Aquivo
Nenhum comentário foi encontrado.
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Pergunta: Meu teclado não está respondendo direito como e consertar? (2)
Secure boot, artigo interessante, nada técnico. (6)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)









