Ver Mensaje Individual
  #16 (permalink)  
Antiguo 22/04/2014, 22:41
Avatar de Drewermerc
Drewermerc
 
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: Código Escaner de puertos en C++

bueno mira primero ve a:
settings despues compiler luego en la pestaña linker settings despues en donde dice other linker opcions agrgas esto -lws2_32.

aqui estan los codigo que te deci vangod.
Código C++:
Ver original
  1. // Netzwerkprogrammierung, WINSOCK API, Sockets
  2. // TCP Server
  3.  
  4. #pragma comment(lib, "ws2_32.lib")
  5. #include <cstdio>
  6. #include <iostream>
  7. #include <WinSock2.h>
  8. #include <Windows.h>
  9. using namespace std;
  10.  
  11. char recvbuf[256];
  12.  
  13. int main()
  14. {
  15.     // Hilfsvariable
  16.     long res;
  17.  
  18.     // Versionsdaten
  19.     WSADATA wsaData;
  20.  
  21.     // ws2_32.dll aktivieren
  22.     res = WSAStartup(MAKEWORD(2, 1), &wsaData);
  23.     if(res == 0 )
  24.         cout << "WSAStartup()\t\t successful" << endl;
  25.     else
  26.         cout << "error WSAStartup(): " << WSAGetLastError() << endl;
  27.  
  28.     // Socket Deskriptoren
  29.     SOCKET slisten, client;
  30.  
  31.     // Socket anforder bzw. Kommunikationsendpunkt einrichten
  32.     slisten = socket(AF_INET, SOCK_STREAM, 0);
  33.     if(slisten != INVALID_SOCKET )
  34.         cout << "socket()  \t\t successful" << endl;
  35.     else
  36.         cout << "error socket(): " << WSAGetLastError() << endl;
  37.  
  38.     // Verbindungsinformationen
  39.     sockaddr_in info;       // sockaddr
  40.     info.sin_addr.s_addr = inet_addr("127.0.0.1");
  41.     info.sin_family      = AF_INET;
  42.     info.sin_port        = htons(54345);
  43.     int infolen = sizeof(info);
  44.  
  45.     res = bind(slisten, (struct sockaddr*)&info, infolen);
  46.     if(res != SOCKET_ERROR )
  47.         cout << "bind()  \t\t successful" << endl;
  48.     else
  49.         cout << "error bind(): " << WSAGetLastError() << endl;
  50.  
  51.     // Warteschlange für einkommende Verbindungen
  52.     res = listen(slisten, SOMAXCONN);
  53.     if(res != SOCKET_ERROR )
  54.         cout << "listen()  \t\t successful" << endl;
  55.     else
  56.         cout << "error listen(): " << WSAGetLastError() << endl;
  57.  
  58.     sockaddr_in clientinfo;
  59.     int clientinfolen = sizeof(clientinfo);
  60.  
  61.     while(1)
  62.     {
  63.         // Verbindung aus der Warteschlange abholen
  64.         client = accept(slisten, (struct sockaddr*)&clientinfo, &clientinfolen);
  65.         if(client != SOCKET_ERROR)
  66.             cout << "client accepted: " << inet_ntoa(clientinfo.sin_addr) << ":"
  67.                  << ntohs(clientinfo.sin_port) << endl;
  68.  
  69.         // über das Socket kommunizieren
  70.         res = send(client, "server message received", strlen("server message received"), 0);
  71.         if(res == SOCKET_ERROR)
  72.             cout << "error send()" << WSAGetLastError() << endl;
  73.  
  74.         res = recv(client, recvbuf, 256, 0);
  75.         if(res == SOCKET_ERROR)
  76.             cout << "error recv(): " << WSAGetLastError() << endl;
  77.         else
  78.             cout << res << " bytes received: "
  79.                  << recvbuf << endl;
  80.     }
  81.  
  82.     closesocket(client);
  83.     closesocket(slisten);
  84.     WSACleanup();
  85.     return 0;
  86. }

Código C++:
Ver original
  1. // TCP Client
  2.  
  3. #pragma comment(lib, "ws2_32.lib")
  4. #include <cstdio>
  5. #include <iostream>
  6. #include <WinSock2.h>
  7. #include <Windows.h>
  8. using namespace std;
  9.  
  10. char sendbuf[256];
  11. char recvbuf[256];
  12.  
  13. int main()
  14. {
  15.     long rc;
  16.  
  17.     WSADATA wsaData;
  18.     SOCKET sConnect;
  19.     sockaddr_in conpar;
  20.  
  21.     // ws2_32.dll aktivieren
  22.     rc = WSAStartup(MAKEWORD(2, 0), &wsaData);
  23.     if(rc == 0 )
  24.         cout << "WSAStartup()\t\t successful" << endl;
  25.     else
  26.         cout << "error WSAStartup(): " << WSAGetLastError() << endl;
  27.  
  28.     // socket einrichten
  29.     sConnect = socket(AF_INET, SOCK_STREAM, 0);
  30.     if(sConnect != INVALID_SOCKET )
  31.         cout << "socket()  \t\t successful" << endl;
  32.     else
  33.         cout << "error socket(): " << WSAGetLastError() << endl;
  34.  
  35.     // verbindungsparameter
  36.     conpar.sin_addr.s_addr = inet_addr("127.0.0.1");
  37.     conpar.sin_family      = AF_INET;
  38.     conpar.sin_port        = htons(54345);
  39.     int conparlen = sizeof(conpar);
  40.  
  41.     // server vor client starten, oder hier eine connect-schleife erstellen
  42.     rc = connect(sConnect, (struct sockaddr*)&conpar, conparlen);
  43.     if(rc != SOCKET_ERROR)
  44.         cout << "connect()   \t\t successful" << endl;
  45.     else
  46.         cout << "not connected(): " << WSAGetLastError() << endl;
  47.  
  48.     while(1)
  49.     {
  50.         memset(&sendbuf, 0, sizeof(sendbuf));
  51.         memset(&recvbuf, 0, sizeof(recvbuf));
  52.  
  53.         rc = recv(sConnect, recvbuf, 256, 0);
  54.         if(rc == SOCKET_ERROR)
  55.             cout << "error recv(): " << WSAGetLastError() << endl;
  56.         else
  57.         {
  58.             cout << rc << " bytes received: "
  59.                  << recvbuf << endl;
  60.         }
  61.  
  62.         cout << "send: ";
  63.         cin.getline(sendbuf, 256);
  64.  
  65.         rc = send(sConnect, sendbuf, strlen(sendbuf), 0);
  66.         if(rc == SOCKET_ERROR)
  67.             cout << "error send(): " << WSAGetLastError() << endl;
  68.         else
  69.             cout << rc << " bytes sent" << endl;
  70.     }
  71.  
  72.     closesocket(sConnect);
  73.     WSACleanup();
  74.     return 0;
  75. }