Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
La nuova fotocamera compatta DJI spicca per l'abbinamento ideale tra le dimensioni ridotte e la qualità d'immagine. Può essere installata in punti di ripresa difficilmente utilizzabili con le tipiche action camera, grazie ad una struttura modulare con modulo ripresa e base con schermo che possono essere scollegati tra di loro. Un prodotto ideale per chi fa riprese sportive, da avere sempre tra le mani
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-03-2005, 17:19   #1
Marinelli
Senior Member
 
L'Avatar di Marinelli
 
Iscritto dal: Aug 1999
Città: Tolmezzo (UD) - Milano
Messaggi: 13744
Dev-C++ e programmazione di rete

Buongiorno a tutti, avrei un problema a compilare un programma sotto Dev-C++... il programma è un client che tenta di connettersi ad un server. Il codice è il seguente:

Codice:
#include <stdio.h>
#include <winsock.h>
#include <windows.h>

#define close closesocket
#define PORT 4000

void addr_initialize (struct sockaddr_in *indirizzo, int port, long IPaddr)
{
   indirizzo->sin_family=AF_INET;
   indirizzo->sin_port=htons((u_short)port);
   indirizzo->sin_addr.s_addr=IPaddr;
}   

int main (int argc, char *argv[])
{
   int sd;
   struct sockaddr_in server_addr;
   struct sockaddr_in mio_addr;
   int mio_addr_len=sizeof(mio_addr);
   int error;
   addr_initialize (&server_addr, PORT, inet_addr(argv[1]));
   sd=socket(AF_INET, SOCK_STREAM, 0);
   error=connect(sd, (struct sockaddr*)&server_addr, sizeof(server_addr));
   if (0==error)
   {
      printf ("Ho eseguito la connessione\n");
      getsockname(sd, (struct sockaddr*)&mio_addr, &mio_addr_len);
      printf ("La mia porta è: %d\n\n", ntohs(mio_addr.sin_port));
   }
   else printf ("%s", "Errore di connect\n\n");
   close(sd);
   system("PAUSE");
   return 0;
}
Gli errori restituiti nella compilazione sono:

C:\DOCUME~1\ALBERT~1\IMPOST~1\Temp\ccSAaaaa.o(.text+0x1a) In function `Z15addr_initializeP11sockaddr_inil':
[Linker error] undefined reference to `htons@4'

C:\DOCUME~1\ALBERT~1\IMPOST~1\Temp\ccSAaaaa.o(.text+0xde) In function `main':
[Linker error] undefined reference to `WSAStartup@8'
[Linker error] undefined reference to `inet_addr@4'
[Linker error] undefined reference to `socket@12'
[Linker error] undefined reference to `connect@12'
[Linker error] undefined reference to `getsockname@12'
[Linker error] undefined reference to `ntohs@4'
[Linker error] undefined reference to `closesocket@4'

Credo di dover linkare la libreria libws2_32.a, ma non ho idea di come farlo. Qualcuno saprebbe darmi una mano?

Grazie mille.
Alberto
__________________
...to go where no one has gone before.
One ring to rule them all, one ring to find them, one ring to bring them all and in darkness bind them.
Caron, non ti crucciare: vuolsi così colà dove si puote ciò che si vuole, e più non dimandare.

Ultima modifica di Marinelli : 04-03-2005 alle 17:23.
Marinelli è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2005, 17:26   #2
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
Alberto cmq le modifiche che ti messo ti servono almeno

Codice:
#ifdef WIN32
	WSADATA wsaData;
	WSAStartup (0x0101,&wsaData);
#endif
la devi mettere se no fallisce la creazione della socket.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2005, 17:45   #3
Marinelli
Senior Member
 
L'Avatar di Marinelli
 
Iscritto dal: Aug 1999
Città: Tolmezzo (UD) - Milano
Messaggi: 13744
Ok, scusa... pensavo valessero solo per la compilazione sotto Visual C.

Il codice allora è questo:

Codice:
#include <stdio.h>
#include <winsock.h>
#include <windows.h>

#define close closesocket
#define PORT 4000

void addr_initialize (struct sockaddr_in *indirizzo, int port, long IPaddr)
{
   indirizzo->sin_family=AF_INET;
   indirizzo->sin_port=htons((u_short)port);
   indirizzo->sin_addr.s_addr=IPaddr;
}   

int main (int argc, char *argv[])
{
   int sd;
   struct sockaddr_in server_addr;
   struct sockaddr_in mio_addr;
   int mio_addr_len=sizeof(mio_addr);
   int error;

#ifdef WIN32
	WSADATA wsaData;
	WSAStartup (0x0101,&wsaData);
#endif
   
   addr_initialize (&server_addr, PORT, inet_addr(argv[1]));
   sd=socket(AF_INET, SOCK_STREAM, 0);
   error=connect(sd, (struct sockaddr*)&server_addr, sizeof(server_addr));
   if (0==error)
   {
      printf ("Ho eseguito la connessione\n");
      getsockname(sd, (struct sockaddr*)&mio_addr, &mio_addr_len);
      printf ("La mia porta è: %d\n\n", ntohs(mio_addr.sin_port));
   }
   else printf ("%s", "Errore di connect\n\n");
   close(sd);
   system("PAUSE");
   return 0;
}
__________________
...to go where no one has gone before.
One ring to rule them all, one ring to find them, one ring to bring them all and in darkness bind them.
Caron, non ti crucciare: vuolsi così colà dove si puote ciò che si vuole, e più non dimandare.
Marinelli è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2005, 18:56   #4
Marinelli
Senior Member
 
L'Avatar di Marinelli
 
Iscritto dal: Aug 1999
Città: Tolmezzo (UD) - Milano
Messaggi: 13744
Ok, ho risolto...

E' sufficiente aggiungere "C:/Programmi/Vari/Dev-Cpp/lib/libws2_32.a" nelle opzioni di compilazione, aggiungi questi comandi alla linea di comando del linker.

Ciao ciao
__________________
...to go where no one has gone before.
One ring to rule them all, one ring to find them, one ring to bring them all and in darkness bind them.
Caron, non ti crucciare: vuolsi così colà dove si puote ciò che si vuole, e più non dimandare.
Marinelli è offline   Rispondi citando il messaggio o parte di esso
Old 04-03-2005, 23:05   #5
nightwolf
Member
 
Iscritto dal: Dec 2001
Messaggi: 264
A che servono le istruzioni:

Codice:
WSADATA wsaData;
WSAStartup (0x0101,&wsaData);
e quando vanno incluse?

Ho notato che rispetto a linux le strutture e le chiamate alle funzioni di rete non cambiano;mi chiedevo:sarà cosi anche per tutte le altre che faremo (se ne faremo...)?
nightwolf è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2005, 07:36   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Servono ad inizializzare il Winsock per quella applicazione...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2005, 10:01   #7
SteR9
Senior Member
 
L'Avatar di SteR9
 
Iscritto dal: Jun 2002
Città: Milano
Messaggi: 959
io sotto win non riesco a compilare nonostante abbia incluso la libreria, mi da errori sui file di libreria inclusi (winsock e windows.h)

Marinelli tu sei riuscito a compilarlo?
SteR9 è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2005, 10:52   #8
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
che compilatore usi ster?

sul vc6 / vc.net basta che vai nelle proprietà e aggiungi nel linker la libreria ws2_32.lib.
Le funzioni che useremo son sempre identiche.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2005, 10:54   #9
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
Quote:
Originariamente inviato da nightwolf
A che servono le istruzioni:

Codice:
WSADATA wsaData;
WSAStartup (0x0101,&wsaData);
e quando vanno incluse?

Ho notato che rispetto a linux le strutture e le chiamate alle funzioni di rete non cambiano;mi chiedevo:sarà cosi anche per tutte le altre che faremo (se ne faremo...)?
per la portabilità del codice oltre che definire anche le librerie in modo appropriato è meglio se metti quelle due istruzioni sotto #ifdef come postato.
Come detto da cionci serve a inizializzare e poter utilizzare il socket.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2005, 11:12   #10
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
Quote:
Originariamente inviato da cionci
Servono ad inizializzare il Winsock per quella applicazione...
cionci tre cose sul programma:

1) non è meglio sempre verificare che il descrittore del socket creato sia un valore >= 0? Alle superiori mi dicevano che era meglio ... all'uni nisba.

2) le costanti AF_INET e PF_INET non sono due cose differenti?? Io sapevo che AF_INET si riferiva al tipo di indirizzi IP della pila TCP/IP mentre PF_INET identificava la pila TCP/IP. All'uni è la stessa cosa.

3) quando si fa il connect non bisogna vedere per la precisione se è anche qui >= 0 il valore restituito e non solo =?

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2005, 11:15   #11
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
quindi per il codice tranne che per le librerie che non ho voglia di fare i casi quando si è sotto win che sotto linux

Codice:
#include <stdio.h>
#include <winsock.h>
#include <windows.h>

#define close closesocket
#define PORT 6000

void addr_initialize (struct sockaddr_in *indirizzo, int port, long IPaddr){
	indirizzo->sin_family=AF_INET;
	indirizzo->sin_port=htons((u_short)port);
	indirizzo->sin_addr.s_addr=IPaddr;
}

int main (int argc, char *argv[]){	
	int sd;
	struct sockaddr_in server_addr;
	struct sockaddr_in mio_addr;
	int mio_addr_len=sizeof(mio_addr);
	int error;

#ifdef WIN32
	WSADATA wsaData;
	WSAStartup (0x0101,&wsaData);
#endif

	/* clear structure */
	
	memset ((char*)&server_addr, 0, sizeof(server_addr));
	memset ((char*)&mio_addr, 0, sizeof(mio_addr));
   
	addr_initialize (&server_addr, PORT, inet_addr("127.0.0.1"));
	sd=socket(AF_INET, SOCK_STREAM, 0);
   
	if (sd < 0) {
	   printf ("\nSocket fallita.\n");
	   system ("PAUSE");
	   return (-1);
	}

	if (connect(sd, (struct sockaddr*)&server_addr, sizeof(server_addr))>=0){
		printf ("Ho eseguito la connessione\n");
		getsockname(sd, (struct sockaddr*)&mio_addr, &mio_addr_len);
		printf ("La mia porta è: %d\n\n", ntohs(mio_addr.sin_port));
	}
	else printf ("%s", "Errore di connect\n\n");
	system ("PAUSE");
	close(sd);
	return 0;
}
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2005, 12:00   #12
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Codice:
/* clear structure */	
	memset ((char*)&server_addr, 0, sizeof(server_addr));
	memset ((char*)&mio_addr, 0, sizeof(mio_addr));
qual'è l'utilità di queste due memset ?

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2005, 12:11   #13
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
Quote:
Originariamente inviato da VICIUS
Codice:
/* clear structure */	
	memset ((char*)&server_addr, 0, sizeof(server_addr));
	memset ((char*)&mio_addr, 0, sizeof(mio_addr));
qual'è l'utilità di queste due memset ?

ciao
è quella di azzerare tutta la struttura.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2005, 12:23   #14
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da Fenomeno85
è quella di azzerare tutta la struttura.
perchè azzerare la struttura quando con la chiamata di funzione successiva i dati vengono inizializati. ?

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2005, 12:32   #15
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
perchè non inizializzi tutta la struttura.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2005, 12:48   #16
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da Fenomeno85
perchè non inizializzi tutta la struttura.

~§~ Sempre E Solo Lei ~§~
Ci sono solo quelle tre cose da inserire il resto è padding.
Codice:
struct sockaddr_in {
        short int          sin_family;  // Address family
        unsigned short int sin_port;    // Port number
        struct in_addr     sin_addr;    // Internet address
        unsigned char      sin_zero[8]; // Same size as struct sockaddr
};
ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2005, 13:36   #17
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
mmm il bello è che si usa

Codice:
SOCKADDR_IN StructureSee Also
Structures, Styles, Callbacks, and Message Maps | SOCKADDR
In the Internet address family, the SOCKADDR_IN structure is used by Windows Sockets to specify a local or remote endpoint address to which to connect a socket.

struct sockaddr_in{
   short sin_family;
   unsigned short sin_port;
   struct in_addr sin_addr;
   char sin_zero[8];
};
Parameters
sin_family 
Address family (must be AF_INET). 
sin_port 
IP port. 
sin_addr 
IP address. 
sin_zero 
Padding to make structure the same size as SOCKADDR. 
Remarks
This is the form of the SOCKADDR structure specific to the Internet address family and can be cast to SOCKADDR. 

The IP address component of this structure is of type IN_ADDR. The IN_ADDR structure is defined in Windows Sockets header file WINSOCK.H as follows:

struct   in_addr {
    union   {
         struct{
             unsigned  char   s_b1,
                              s_b2,
                              s_b3,
                              s_b4;
        }  S_un_b;
             struct  {
             unsigned  short  s_w1,
                              s_w2;
              }  S_un_w;
               unsigned long  S_addr;
     } S_un;
};
questo è quello che c'è anche su VC.NET ... cmq dato che sin_zero[8] deve valere 0 in conversione di struttura te glieli metti.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2005, 14:10   #18
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da Fenomeno85
questo è quello che c'è anche su VC.NET ... cmq dato che sin_zero[8] deve valere 0 in conversione di struttura te glieli metti.
e perché mai dovrebbe valere zero ?
scusate se continuo a rompervi ma questa cosa proprio non riesco a capirla.

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2005, 14:24   #19
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
Quote:
Originariamente inviato da VICIUS
e perché mai dovrebbe valere zero ?
scusate se continuo a rompervi ma questa cosa proprio non riesco a capirla.

ciao
ti riporto le parole del mio libro delle superiori ("Internet e reti di calcolatori")
Codice:
... anche se un indirizzo TCP/IP è lungo 6 byte, 
la struttura sockaddr ne prevede 14 per memorizzare
 gli indirizzi. Per questo motivo, l'ultimo campo di sockaddr_in
 è costituito da 8 byte nulli, in modo che la lunghezza totale 
della struttura sia pari a quella a quella di sockaddr.
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 05-03-2005, 14:30   #20
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
cercando con google:

Codice:
Come si nota nel listato, è necessario porre a zero 8 bytes della 
struttura dove l'indirizzo IP è stato caricato.
Perchè azzerare 8 bytes? Perchè poi proprio 8 bytes?
 Per compatibilità all'indietro con la vecchia sockaddr
(senza _in ).
E' facile fare il cast di un puntatore se le strutture hanno la stessa dimensione (ragion per cui
sono 8 bytes) 
e poiché i dati non sono posti a zero dopo la loro allocazione e necessario azzerarli a mano.
quindi avevo ragione la struttura va azzerata o almento devi azzera gli 8 byte... quindi se azzeri tutta la struttura è lu stess .. bye

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati Oracle AI World 2025: l'IA cambia tutto, a parti...
L'aeroplano supersonico ''silenzioso'' N...
Nissan: le batterie allo stato solido co...
NVIDIA cambia strategia? La GPU Feynman ...
Signal respinge le accuse dopo il down A...
Uragano Melissa in arrivo: la tempesta d...
8K o 4K? Ecco perché il tuo occhi...
Mercato auto europeo in crescita nei pri...
Addio SSD e RAM, benvenuti funghi: dagli...
TCL Q6C: tecnologia e design per un TV c...
Corsair MP700 PRO XT al debutto: un SSD ...
Apple Watch Ultra 2 in titanio con GPS +...
Nuova protezione per Windows 11: scansio...
GoPro LIT HERO a 249€ su Amazon: la nuov...
PayPal integra i pagamenti in ChatGPT: c...
Battlefield REDSEC: al via la Stagione 1...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:54.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v