Ver Mensaje Individual
  #12 (permalink)  
Antiguo 22/04/2014, 19:19
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Código Escaner de puertos en C++

Hola amigo Drewermerc, muchas gracias por tu ayuda, he probado tu código, pero me sigue dando errores, los mismos son estos:

mingw32-g++.exe -c C:\Users\Daniel\Desktop\C++\SocketPuertos.cpp -o C:\Users\Daniel\Desktop\C++\SocketPuertos.o
mingw32-g++.exe -o C:\Users\Daniel\Desktop\C++\SocketPuertos.exe C:\Users\Daniel\Desktop\C++\SocketPuertos.o
C:\Users\Daniel\Desktop\C++\SocketPuertos.o:Socket Puertos.cpp:(.text+0x70): undefined reference to `WSAStartup@8'
C:\Users\Daniel\Desktop\C++\SocketPuertos.o:Socket Puertos.cpp:(.text+0x1cb): undefined reference to `socket@12'
C:\Users\Daniel\Desktop\C++\SocketPuertos.o:Socket Puertos.cpp:(.text+0x1e7): undefined reference to `htons@4'
C:\Users\Daniel\Desktop\C++\SocketPuertos.o:Socket Puertos.cpp:(.text+0x208): undefined reference to `connect@12'
C:\Users\Daniel\Desktop\C++\SocketPuertos.o:Socket Puertos.cpp:(.text+0x274): undefined reference to `closesocket@4'
C:\Users\Daniel\Desktop\C++\SocketPuertos.o:Socket Puertos.cpp:(.text+0x2db): undefined reference to `WSACleanup@0'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
6 error(s), 0 warning(s) (0 minute(s), 0 second(s))


También probé este código:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <time.h>
  4. #include <conio.h>
  5. #include <dos.h>
  6. #include <stdio.h>
  7. using namespace std;
  8.  
  9. int TcpConnect (int Port, char *IpDst, int Timeout)
  10. {
  11. SOCKET sock;
  12. SOCKADDR_IN sin;
  13. fd_set Write, Err;
  14. TIMEVAL timeout;
  15. unsigned long Mode = 1;
  16. int ret, err;
  17.  
  18. sock = socket (AF_INET,SOCK_STREAM,0);
  19. if (sock == INVALID_SOCKET)
  20. {
  21.     return 2;
  22. }
  23.  
  24. sin.sin_addr.s_addr = inet_addr (IpDst);
  25. sin.sin_port = htons (Port);
  26. sin.sin_family = AF_INET;
  27.  
  28. if (ioctlsocket (sock, FIONBIO, &Mode) != 0)
  29. {
  30.     closesocket (sock);
  31.     return 2;
  32. }
  33.  
  34. ret = ::connect (sock, (struct sockaddr*)&sin, sizeof (sin));
  35.  
  36. if (ret == SOCKET_ERROR)
  37. {
  38.       err = WSAGetLastError ();
  39.       if (err == WSAEWOULDBLOCK)
  40.       {
  41.             FD_ZERO (&Write);
  42.             FD_ZERO (&Err);
  43.             FD_SET (sock, &Write);
  44.             FD_SET (sock, &Err);
  45.             timeout.tv_sec = Timeout;
  46.             timeout.tv_usec = 0;
  47.  
  48.             ret = select (0, NULL, &Write, &Err, &timeout);
  49.             if (ret == 0)
  50.             {
  51.                     // Timeout
  52.                     closesocket (sock);
  53.                     return 1; // Close
  54.              }
  55.              else
  56.              {
  57.                      if (FD_ISSET (sock, &Write))
  58.                      {
  59.                               closesocket (sock);
  60.                               return 0; // Open
  61.                       }
  62.                       if (FD_ISSET (sock, &Err))
  63.                       {
  64.                                closesocket (sock);
  65.                                return 2; // Error
  66.                        }
  67.                  }
  68.       }
  69.       else
  70.       {
  71.               closesocket (sock);
  72.               return 1; // Close
  73.        }
  74. }
  75. else
  76. {
  77.     closesocket (sock);
  78.     return 0; // open
  79. }
  80.  
  81. return 0;
  82. }


Pero también me da errores son errores son estos:

mingw32-g++.exe -c C:\Users\Daniel\Desktop\C++\Pruebas.cpp -o C:\Users\Daniel\Desktop\C++\Pruebas.o
mingw32-g++.exe -o C:\Users\Daniel\Desktop\C++\Pruebas.exe C:\Users\Daniel\Desktop\C++\Pruebas.o
C:\Users\Daniel\Desktop\C++\Pruebas.o:Pruebas.cpp: (.text+0x6d): undefined reference to `socket@12'
C:\Users\Daniel\Desktop\C++\Pruebas.o:Pruebas.cpp: (.text+0x98): undefined reference to `inet_addr@4'
C:\Users\Daniel\Desktop\C++\Pruebas.o:Pruebas.cpp: (.text+0xac): undefined reference to `htons@4'
C:\Users\Daniel\Desktop\C++\Pruebas.o:Pruebas.cpp: (.text+0xd3): undefined reference to `ioctlsocket@12'
C:\Users\Daniel\Desktop\C++\Pruebas.o:Pruebas.cpp: (.text+0xea): undefined reference to `closesocket@4'
C:\Users\Daniel\Desktop\C++\Pruebas.o:Pruebas.cpp: (.text+0x11b): undefined reference to `connect@12'
C:\Users\Daniel\Desktop\C++\Pruebas.o:Pruebas.cpp: (.text+0x130): undefined reference to `WSAGetLastError@0'
C:\Users\Daniel\Desktop\C++\Pruebas.o:Pruebas.cpp: (.text+0x250): undefined reference to `select@20'
C:\Users\Daniel\Desktop\C++\Pruebas.o:Pruebas.cpp: (.text+0x267): undefined reference to `closesocket@4'
C:\Users\Daniel\Desktop\C++\Pruebas.o:Pruebas.cpp: (.text+0x293): undefined reference to `__WSAFDIsSet@8'
C:\Users\Daniel\Desktop\C++\Pruebas.o:Pruebas.cpp: (.text+0x2aa): undefined reference to `closesocket@4'
C:\Users\Daniel\Desktop\C++\Pruebas.o:Pruebas.cpp: (.text+0x2d6): undefined reference to `__WSAFDIsSet@8'
C:\Users\Daniel\Desktop\C++\Pruebas.o:Pruebas.cpp: (.text+0x2ed): undefined reference to `closesocket@4'
C:\Users\Daniel\Desktop\C++\Pruebas.o:Pruebas.cpp: (.text+0x30c): undefined reference to `closesocket@4'
C:\Users\Daniel\Desktop\C++\Pruebas.o:Pruebas.cpp: (.text+0x32b): undefined reference to `closesocket@4'
c:/program files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../libmingw32.a(main.o):main.c:(.text.startup+0xa7): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 1 second(s))
16 error(s), 0 warning(s) (0 minute(s), 1 second(s))


La verdad no sé porque fallan los códigos... no entiendo.
Gracias amigo igualmente!!!

PD: El código es en C++, utilizo Code::Blocks