Socket em C/C++ - SERVER
Publicado por Krownix 24/11/2005
[ Hits: 12.760 ]
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();
}
Exemplo Básico de Sockets em C
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
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
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
Alterar conteúdo de dica [RESOLVIDO] (3)
Vou destruir sua infância:) (5)
Quando vocês pararam de testar distros? (23)









