Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema compilazione socket c
Forum - C/C++ - Problema compilazione socket c

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
Gambol (Normal User)
Newbie


Messaggi: 9
Iscritto: 07/05/2010

Segnala al moderatore
Postato alle 20:48
Venerdì, 07/05/2010
Salve a tutti,
in giro per la rete ho trovato i sorgenti di client e server scritti in c,avevo l'intenzione di andare a studiarli solo quando vado a compilare mi da un errore che non riesco a risolvere,sia col server che col client.
Il sorgente del client è:

Codice sorgente - presumibilmente C++

  1. //Programma che si connette alla porta 21 del computer da cui viene eseguito
  2.  
  3. #include <windows.h>
  4. #include <winsock.h> //includo le varie librerie tra cui quella winsock
  5. #include <stdio.h>
  6. int main()
  7. {
  8. SOCKET sock; // creo la socket chiamato sock che userò nella connessione
  9. struct sockaddr_in sock_addr; // inizializzo la socket
  10. WSADATA data;  // inizializzo la variabile che contiene le primitive di Winsock
  11. WORD p;
  12. p=MAKEWORD(2,0);  // creo la variabile p che contiene la versione della wsock32.dll
  13. WSAStartup(p,&data); // inizializzo la wsock32.dll verificandone la mancanza di errori
  14.  
  15. sock=socket(PF_INET,SOCK_STREAM,0);  // creo la socket indicandone le caratteristiche
  16. sock_addr.sin_family=PF_INET; // indico il protocollo utilizzato (TCP/IP)
  17. sock_addr.sin_port=htons(21); //indico la porta a cui connettere la socket
  18. sock_addr.sin_addr.S_un.S_un_b.s_b1=127; // indico l'indirizzo IP
  19. sock_addr.sin_addr.S_un.S_un_b.s_b2=0;
  20. sock_addr.sin_addr.S_un.S_un_b.s_b3=0;
  21. sock_addr.sin_addr.S_un.S_un_b.s_b4=1;
  22. connect(sock,(struct sockaddr*)&sock_addr,sizeof(struct sockaddr)); // mi connetto all'indirizzo scelto
  23. closesocket(sock);  // chiudo la socket
  24. WSACleanup();       //libero le risorse utilizzate dalla libreria Winsock
  25. return 0;
  26. }



l'errore che mi da è:
  [Linker error] undefined reference to `__cpu_features_init'


se può essere di aiuto questo errore me lo dava anche con altre parti del sorgente,e girando per internet ho scoperto che bisognava aggiungere un comando al compilatore,che ha risolto i miei problemi,però non l'ultimo.

Come ide uso dev c++.


PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:18
Venerdì, 07/05/2010
Cambia IDE/compilatore ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 23:59
Venerdì, 07/05/2010
Testo quotato

Postato originariamente da nessuno:

Cambia IDE/compilatore ...


PM Quote
Avatar
Gambol (Normal User)
Newbie


Messaggi: 9
Iscritto: 07/05/2010

Segnala al moderatore
Postato alle 13:58
Sabato, 08/05/2010
ok,raga ho scaricato visual c++,solo che ho provato a fare un semplice hello world per vedere come funzionava un po la baracca,quindi ho creato un nuovo proggetto,solo che nella dichiarazione delle librerie non mi riconosce la iostream quando compilo mi dice:

fatal error C1083: Impossibile aprire il file inclusione 'iostream.h': No such file or directory

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:45
Sabato, 08/05/2010
Prima di tutto iostream.h non è una libreria ma un file include.

In secondo luogo, quell'include in C++, secondo lo standard (a cui aderisce il VC++ perchè più recente rispetto al vecchissimo Dev), si indica senza .h, ovvero

#include <iostream>


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Gambol (Normal User)
Newbie


Messaggi: 9
Iscritto: 07/05/2010

Segnala al moderatore
Postato alle 15:42
Sabato, 08/05/2010
ok adesso mi da questo errore:

error C2065: 'cout': identificatore non dichiarato

sorgente:

Codice sorgente - presumibilmente C++

  1. #include "stdafx.h"
  2. #include <iostream>
  3.  
  4.  
  5. int _tmain(int argc, _TCHAR* argv[])
  6. {
  7.         cout<<"ciao";
  8.         return 0;
  9. }



ho lasciato il main come lo dichiara lui in modo da evitare errori.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:03
Sabato, 08/05/2010
Testo quotato

Postato originariamente da Gambol:

ok adesso mi da questo errore:

error C2065: 'cout': identificatore non dichiarato



Ti mancano le basi del C++ ... prima di iniziare a scrivere codice, dovresti studiare un po' di teoria da un libro, altrimenti non comprendi nè gli errori nè le soluzioni ...

Devi indicare il namespace standard, ovvero

Codice sorgente - presumibilmente C++

  1. #include "stdafx.h"
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int _tmain(int argc, _TCHAR* argv[])
  7. {
  8.     cout<<"ciao";
  9.     return 0;
  10. }



Ultima modifica effettuata da nessuno il 08/05/2010 alle 16:04


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Gambol (Normal User)
Newbie


Messaggi: 9
Iscritto: 07/05/2010

Segnala al moderatore
Postato alle 11:16
Domenica, 09/05/2010
sisi,funziona poi l'ho letto pure nella guida della prima applicazione.
Hai un suggerimento su come farli riconoscere la winsock?

Ultima modifica effettuata da Gambol il 09/05/2010 alle 11:17
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:59
Domenica, 09/05/2010
Testo quotato

Postato originariamente da Gambol:

... come farli riconoscere la winsock?



Ma che vuol dire ?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo