si ho poca esperienza ma son cose che devo imparare...
pero mi servirebbe risolvere questo problema :
volevo scrivere un programma che facesse lo scanner delle porte di un pc!!!
per farlo uso i socket non blocanti e ottengo questo errore
WSAEALREADY ...
questo è il codice :
code:
#include <stdio.h>
#include <winsock.h>
int main () {
WSADATA data;
int err = WSAStartup(MAKEWORD(2,2), &data), porta;
SOCKET sock;
SOCKADDR_IN sock_in;
unsigned long arg = 1;
if ( err != 0) printf("Libreria non inizializata, ERRORE %d \n", WSAGetLastError ());
sock = socket(PF_INET, SOCK_STREAM, 0);
if ( sock == INVALID_SOCKET)
printf("Funzione SOCKET non correta, ERRORE %d \n ", WSAGetLastError ());
err = ioctlsocket(sock, FIONBIO, &arg);
printf("Valore arg : %l", arg);
if ( err == SOCKET_ERROR)
printf("Funzione IOCTLSOCKET non riuscita, ERRORE %d \n", WSAGetLastError ());
sock_in.sin_family = AF_INET;
sock_in.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
for ( porta = 0; porta <65535; porta++) {
sock_in.sin_port = porta;
err = connect(sock, (SOCKADDR *)&sock_in, sizeof(struct sockaddr));
if ( err == SOCKET_ERROR)
printf("Funzione CONNECT non riuscita, ERRORE %d \n", WSAGetLastError ());
else printf("Funzione connetc riuscita, porta %d\n", porta);
}
stavo pensando di usare la funzione select, ma non sono riuscito ad ottenere grandi risultati!!!
grazie![]()
![]()
![]()