Ayuda en Sockets C++

Iniciado por Xirc, Diciembre 19, 2014, 12:13:41 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Diciembre 19, 2014, 12:13:41 PM Ultima modificación: Diciembre 19, 2014, 03:20:11 PM por blackdrake
Buenos días lectores,

Quisiera que me ayuden a convertir estos códigos de sockets en c++ para crear un servidor de acuerdo a "no-ip". O bien, volver mi pc un servidor.

Mi código funciona con "127.0.0.1", pero como hago para volverlo una botnet o algo parecido ?

Tengo entendido que puedo poner en el cliente mi ip pública, pero no funciona... alguien con más experiencia me podría decir ?

Tengo entendido que tengo que abrir puertos... ¿qué puertos debo utilizar?¿Abro en router y/o firewall?

Sin incomodar al lector, si tienen un código 100% funcional con "no-ip" me interesa estudiarlo.

Muchas Gracias,

Servidor:
Código: cpp
#include <iostream>
#include <WinSock2.h>

#pragma comment(lib,"Ws2_32.lib")

using namespace std;

void Error(char * mensaje){
cout << "Error: " << mensaje << endl;
system("pause");
}

void Success(char * mensaje){
cout << "Successful: " << mensaje << endl;
}

int main(){

WSAData wsa;

if(WSAStartup(MAKEWORD(2,2),&wsa) != 0)
Error("WSAStartup");
else
Success("WSAStartup");

SOCKET mySocket = socket(AF_INET,SOCK_STREAM,0);

if(mySocket == INVALID_SOCKET)
Error("Socket");
else
Success("Socket");

struct sockaddr_in server;

server.sin_family = AF_INET;
server.sin_port = htons(2000);
server.sin_addr.S_un.S_addr = INADDR_ANY;

if( bind(mySocket,(sockaddr*)&server,sizeof(server)) != 0)
Error("Bind");
else
Success("Bind");

if( listen(mySocket,5) != 0 )
Error("Listen");
else
Success("Listen");

SOCKET cliente = INVALID_SOCKET;


while(cliente == INVALID_SOCKET){
accept(cliente,0,0);
}

Success("Accept");

cout << endl;
system("pause");

WSACleanup();
closesocket(mySocket);

cout << "Bye bye !!" << endl;

Sleep(1000);

return 0;
}


Cliente:

Código: cpp
#include <iostream>
#include <WinSock2.h>

#pragma comment(lib,"Ws2_32.lib")

using namespace std;

void Error(char * mensaje){
cout << "Error: " << mensaje << endl;
system("pause");
exit(1);
}

void Success(char * mensaje){
cout << "Successful: " << mensaje << endl;
}

int main(){

WSADATA wsa;

if(WSAStartup(MAKEWORD(2,2),&wsa) != 0)
Error("WSAStartup");
else
Success("WSAStartup");

SOCKET mySocket = socket(AF_INET,SOCK_STREAM,0);

if(mySocket == INVALID_SOCKET)
Error("Socket");
else
Success("Socket");

struct sockaddr_in server;

server.sin_family = AF_INET;
server.sin_port = htons(2000);
server.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");


if( connect(mySocket,(sockaddr*)&server,sizeof(server)) != 0)
Error("Connect");
else
Success("Connect");

cout << "Connection successful !!" << endl;

cout << endl;
system("pause");

WSACleanup();
closesocket(mySocket);

cout << "Bye bye !!" << endl;

Sleep(1000);

return 0;
}