Enviado em 29/04/2018 - 17:44h
Olá pessoal, estou desenvolvendo um proxy bem simples com C++ usando a biblioteca socket
int main(int argc, char* argv[]){
// Verifica os parametros
if ( argc < 3 ){
std::cout << "Especifique uma porta!" << std::endl;
std::cout << "Exemplo: sckt -p 80" << std::endl;
return 1;
}
// Pega a porta
int porta;
for (int i = 0; i < argc; ++i){
if ( !strncmp(argv[i],"-p",2) ){
porta = atoi(argv[i+1]);
break;
}
}
if (porta > 0){
int serversocket, clientsocks;
int opt = 1;
struct sockaddr_in address;
// Inicializa um socket
serversocket = socket(AF_INET,SOCK_STREAM,0);
// Configura o socket
setsockopt(serversocket,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));
// Endereço para bind
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(porta);
int address_len = sizeof(address);
// Inicializa o bind
if ( (bind(serversocket,(sockaddr*)&address,sizeof(address))) < 0 ) {
std::cout << "Erro ao abrir a porta: " << porta << std::endl;
return 1;
}
// Modo Ativo
listen(serversocket,1);
// Loop de recebimento de clientes
int clientes = 1;
std::cout << "Sucesso!" << std::endl;
std::cout << "Porta aberta: " << porta << std::endl;
while (true){
if ( (clientsocks = accept(serversocket,(sockaddr *)&address, (socklen_t*)&address_len)) > 0 ){
// Aqui trato as requisições do cliente
// Sempre uso close no FD do cliente
// Debugando...
std::cout << "Clientes: " << clientes << std::endl;
clientes++;
}
else{
// Debugando....
std::cout << "Cliente ERRO: " << clientsocks << std::endl;
break;
}
}
}
else{
std::cout << "Porta Invalida!" << std::endl;
std::cout << "Especifique uma porta!" << std::endl;
std::cout << "Exemplo: sckt -p 80" << std::endl;
return 0;
}
return 0;
}
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (11)