Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [C] Winsock

  1. #1
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558

    Winsock

    Mi sto comentando con un programma che permette di gestire l'accesso remoto di un altra persona al mio PC.

    In pratica quando l'altro tenta di acedervi (ad esempio cn un terminale telnet), dopo aver inserito la pass, ottiene il ProductID del mio PC (contenuto nel registro di sistema)

    Cmq ecco il codice:

    codice:
    #include <winsock.h>
    #include <windows.h>
    #include <conio.h>
    #include <stdio.h>
    #include <string.h>
    
    SOCKET s1,s2;
    WSADATA WSAdata;
    struct sockaddr_in in1,in2;
    HKEY hKey;
    
    void connettiti(void)
    {
    int lenght;
    WSAStartup(0x0202,&WSAdata);
    s1=socket(PF_INET,SOCK_STREAM,0);
    in1.sin_family=PF_INET;
    in1.sin_port=htons(2003);
    in1.sin_addr.s_addr=INADDR_ANY;
    bind(s1,(struct sockaddr*)&in1,sizeof(struct sockaddr_in));
    lenght=sizeof(struct sockaddr);
    listen(s1,1);
    printf("\nIN ATTESA...");
    s2=accept(s1,(struct sockaddr*)&in2,(LPINT)&lenght);
    printf("Ok...\n");
    }
    
    char* ricevi(char* buff,int lenght)
    {
    int i;
    for (i=0;i<lenght;i++)
    {
    recv(s2,buff+i,1,0);
    send(s2,buff+i,1,0);
    }
    return buff;
    }
    
    char* prendi_ProductID(char* buff)
    {
    unsigned long d=0xFF;
    RegCreateKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion",0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
    RegQueryValueEx(hKey,"ProductId",NULL,NULL,(LPBYTE)buff,&d);
    RegCloseKey(hKey);
    return buff;
    }
    
    int main(void)
    {
    char buffer[100];
    while(1)
    {
    connettiti();
    strcpy(buffer,"\rtoc toc neo... \r\ninserisci password:");
    send(s2,buffer,strlen(buffer),0);
    if (strncmp(ricevi(buffer,8),"01234567",8)==0)
    {
    strcpy(buffer,"\r\nlogin OK\r\nProductID:");
    send(s2,prendi_ProductID(buffer),strlen(buffer),0);
    }
    shutdown(s1,2);
    closesocket(s1);
    shutdown(s2,2);
    closesocket(s2);
    WSACleanup();
    }
    return(0);
    }
    Il problema è che nn va!!

    IL compilatore mi dà i seguenti errori:

    15 undefined reference to _WSAStartup@8
    16 undefined reference to _socket@12
    18 undefined reference to _htons@4
    20 undefined reference to _bind@12
    22 undefined reference to _listen@8
    24 undefined reference to _accept@12
    33 undefined reference to _recv@16
    34 undefined reference to _send@16
    61 undefined reference to _shutdown@8
    62 undefined reference to _closesocket@4
    65 undefined reference to _WSACleanup@0


    Come mai? Dov'è il problema?

  2. #2
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Chiami una marea di funzioni di cui lui nn trova la definizione/implementazione.

    Sicuro di aver incluso tutte le librerie/file?
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    311
    se non sbaglio devi aggiungere ws2_32.lib alle librerie usate dal linker

  4. #4
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558
    Originariamente inviato da pela
    se non sbaglio devi aggiungere ws2_32.lib alle librerie usate dal linker
    Grazie 1000! Era questo il problema! Ora funziona Tnx!! :adhone:

  5. #5
    i titoli delle discussioni devono premettere il linguaggio
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  6. #6
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558
    Ho un altro problema con questo programm. Ora l'ho cpmpilato.

    Funziona..quando qualcuno cerca di connettersi al mio IP (e il prog è attivo) sulla porta 2003 gli compaiono i messaggi, predefiniti,perciò la connessione è ok.

    Purtroppo al momento di inserire la password le lettere digitate dal terminale remoto appaiono doppie. Io pensavo che fosse un problema di echo locale, ma anche disattivandolo,è la stessa cosa.

    Chi mi sa aiutare?

  7. #7
    come si aggiungono le librerie al linker?

    io uso visual c++

  8. #8
    Utente di HTML.it L'avatar di teo13
    Registrato dal
    Dec 2006
    Messaggi
    41
    se non sbaglio devi aggiungere ws2_32.lib alle librerie usate dal linker
    Ma come faccio ad aggiungerla??
    Sto cominciando ad usare le Winsock ma io ho fatto un programma molto più semplice e mi viene lo stesso errore!!
    Ciao a tutti e grazie!

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    Non ti sei accorto che la discussione è del 2004 morta e sepolta? A quel tempo c'era ancora xegallo come moderatore...

    Apri una nuova discussione, conforme a quanto richiesto dal Regolamento.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.