Socket em C/C++ - SERVER
Publicado por Krownix 24/11/2005
[ Hits: 12.656 ]
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(); }
Programa em C para monitorar IPs e portas ativas
Connect - um simples programa para atravessar proxys Socks
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
É normal não gostar de KDE? (6)
Impressora epson l6270 não funciona em Linux mint (0)
esqueci a senha do boot do notebook dell vostro 3300 (3)