Socket em C/C++ - SERVER
Publicado por Krownix 24/11/2005
[ Hits: 12.720 ]
Este é o server, que também demonstra o funcionamento da winsock2.h, este programa fica aguardando uma conexão e quando conectado recebe string pela rede.
#include<iostream>
#include<stdlib.h>
#include<winsock2.h>
using namespace std;
int main(void) {
int Tamsockaddr;
char str_rec[60], str_env[60];
WSADATA WsData;
if(WSAStartup(MAKEWORD(2,0), &WsData)!=0) { cout << "Erro ao iniciar DLL" << "\n"; exit(1); }
struct sockaddr_in local, s_recv;
SOCKET Ouvir; //aguardar a conexao
Ouvir=socket(AF_INET, SOCK_STREAM, 0);
if(Ouvir<0) { cout << "Erro criaçao do socket" << "\n"; exit(1); }
local.sin_family=AF_INET;
local.sin_port=htons(1024);
local.sin_addr.s_addr=INADDR_ANY;
memset(&local.sin_zero,0x00,8);
if(bind(Ouvir,(struct sockaddr *)&local,sizeof(local))!=0) { cout << "Erro bind()" << "\n"; exit(1); } //prepara socket para aguardar conexao
Tamsockaddr=sizeof(sockaddr);
if(listen(Ouvir,1)!=0) { cout << "Erro listen()" << "\n"; exit(1); } //aguarda conexao
SOCKET Recv; //recebe dados
Recv=accept(Ouvir,(struct sockaddr *)&s_recv, &Tamsockaddr);
if(Recv<0) { cout << "Erro ao receber conexao" << "\n"; exit(1); }
else { cout << "\n" << "Conexao vinda de:" << "\n" << "Maquina.: " << inet_ntoa(s_recv.sin_addr) << "\n" << "Porta.: " << ntohs(s_recv.sin_port) << "\n"; }
cout << "\n\n";
while(recv(Recv, str_rec, sizeof(str_rec),0)) { cout << "\n" << "-" << str_rec << "\n"; }
closesocket(Recv); closesocket(Ouvir);
WSACleanup();
}
Simples servidor http com concorrência feito em C
Exemplo Básico de Sockets em C
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Consertando o áudio com estalos e interrupções no Pipewire
Como implementar Raid (0, 1, 5, 6, 10 e 50)
fusermount3 no Ubuntu 25.10 - mantenha o perfil do AppArmor
[Resolvido] dlopen(): error loading libfuse.so.2 AppImages require FUSE to run.
REDE WI-FI NÃO APARECE NO LINUX MINT (0)
Como programar um sistema de controle para distribuições linux em c? (5)
Servidor Ubuntu 24.04 HD 500 não tenho espaço na \home\adminis... (2)









