Exemplo simples de socket em C/C++
Publicado por kenneth de oliveira (última atualização em 07/02/2018)
[ Hits: 11.763 ]
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;
}
Imprimindo uma arvore graficamente
Converter arquivos Bitmap para ASCII-art
Função "Partição de Inteiros" Recursiva COM Tabela Estática em C
Nenhum comentário foi encontrado.
Gentoo binário em 2026: UEFI, LUKS, Btrfs e Systemd
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Em qual Arquivo colocar as Configurações
Forçar resolução teimosa no Wayland
Como fazer um pendrive bootável utilizando a ferramenta Rufus
Alguém aqui mexe com arduino? (2)
Audio Failure on Acer Aspire AS4738 – Intel 5 Series HD Audio (Linux M... (1)









