Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming
Questo mouse ultraleggero, con soli 36 grammi di peso, è stato concepito per offrire un'esperienza di gioco di alto livello ai professionisti degli FPS, grazie al polling rate a 8.000 Hz e a un sensore ottico da 33.000 DPI. La recensione esplora ogni dettaglio di questo dispositivo di gioco, dalla sua agilità estrema alle specifiche tecniche che lo pongono un passo avanti
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni
Dal richiamo di Enrico Letta alla necessità di completare il mercato unico entro il 2028 alla visione di Nokia sul ruolo dell’IA e delle reti intelligenti, il Nokia Innovation Day 2025 ha intrecciato geopolitica e tecnologia, mostrando a Vimercate come la ricerca italiana contribuisca alle sfide globali delle telecomunicazioni
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
OPPO Reno14 F 5G si propone come smartphone di fascia media con caratteristiche equilibrate. Il device monta processore Qualcomm Snapdragon 6 Gen 1, display AMOLED da 6,57 pollici a 120Hz, tripla fotocamera posteriore con sensore principale da 50MP e generosa batteria da 6000mAh con ricarica rapida a 45W. Si posiziona come alternativa accessibile nella gamma Reno14, proponendo un design curato e tutto quello che serve per un uso senza troppe preoccupazioni.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-07-2008, 11:30   #1
billybilly
Member
 
Iscritto dal: Mar 2006
Messaggi: 31
[c++] come inviare dati con winsock??

Ciao a tutti,
Ho fatto un piccolo programmino client server....
il client si connette al server e tramite la funzione send(socket s ,const char* buff,int size_buff,int flag) io riesco a inviare delle stringhe.
Il problema è che io vorrei che il client inviasse al server delle strutture dati.
la struttura che vorrei inviare è fatta da 4 interi.
Codice:
Typedef struct{
          int a;
          int b;
          int c;
          int d;
          }pippo;

pippo struttura_prova;
come faccio ad iviare al server la struttura prova?? che funzione dovrei usare??
billybilly è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2008, 12:09   #2
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Devi serializzare la tua struttura e poi pensare anche al protocollo di comunicazione.
Come fa il server a sapere quando sono finiti i dati inviati?
Come riconosce l'inizio di una trasmissione dati?
Come riconosce cosa gli è stato inviato?
Ad esempio potresti voler inviare 2 strutture differenti e a quel punto non sapresti più come distinguerle.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2008, 12:13   #3
billybilly
Member
 
Iscritto dal: Mar 2006
Messaggi: 31
non devo serializzare i dati.
devo mandargliene solo 1 e poi chiudere la connessioe. non ho altro da inviare. solo che non so come inviare una struttura
billybilly è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2008, 13:05   #4
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da billybilly Guarda i messaggi
non devo serializzare i dati.
Ti consiglio una ripassata al signiifcato di serializzazione:
http://en.wikipedia.org/wiki/Serialization

Quote:
devo mandargliene solo 1 e poi chiudere la connessioe. non ho altro da inviare. solo che non so come inviare una struttura
Potresti provare con:
Codice:
send(socket, (char*)&struttura_prova, sizeof(pippo))
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2008, 13:32   #5
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
mai chiamare "socket" un socket descriptor: collide col nome della funzione socket; 'si sa mai dovessi avere la necessità di prendere il puntatore alla funzione anziché il valore del socket descriptor.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2008, 14:50   #6
billybilly
Member
 
Iscritto dal: Mar 2006
Messaggi: 31
ok funziona ...
avrei un altro problemino.... nell'invio di più messaggi...cioè se :

client : send(dato1)....send(dato2)
server : recv(buff)....recv(buff)

dopo la seconda recv in buff mi trovo ancora dato1 e non dato2 :|.

il problema lìho risolto in questo modo :

client : send(dato1)... recv(miobuff) .... send(dato2)
server : recv(buff) .... send ("ok") .... recv(buff)

volevo sapere se non fosse possibili fare delle send(lato client) e recv(lato server) consecutive senza dover mandare questi messaggi di "sincronizzazione" ... "ok".
billybilly è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2008, 15:30   #7
peppepz
Senior Member
 
Iscritto dal: Jan 2007
Città: Messina
Messaggi: 502
Solo un avviso: non inviare mai direttamente strutture del C: diversi compilatori (o stesso compilatore con diverse opzioni) hanno diverse regole per l'allineamento dei membri della struct. Praticamente qualche compilatore ti potrebbe inserire byte fra un membro e l'altro che non ti aspetti di trovare ;-) . Insomma, ti conviene inviare singolarmente i membri della struct anziché la struct per intero. Sì, è scomodo.
peppepz è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2008, 23:46   #8
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da peppepz Guarda i messaggi
Solo un avviso: non inviare mai direttamente strutture del C: diversi compilatori (o stesso compilatore con diverse opzioni) hanno diverse regole per l'allineamento dei membri della struct. Praticamente qualche compilatore ti potrebbe inserire byte fra un membro e l'altro che non ti aspetti di trovare ;-) . Insomma, ti conviene inviare singolarmente i membri della struct anziché la struct per intero. Sì, è scomodo.
più che altro gli conviene allineare le struct al singolo byte, così il compilatore non farà nessun padding e le strutture potranno essere trasmesse cross-compiler (cioè "cross - applicazioni compilate da compilatori diversi", scusate la cacofonia).
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2008, 09:00   #9
billybilly
Member
 
Iscritto dal: Mar 2006
Messaggi: 31
ma la domanda era.... non posso fare due send consecutive dal client e due recive consecutive lato client??.... perchè nella seconda recive ricevo sempre il dato inviato con la prima send?
billybilly è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza Sottile, leggero e dall'autonomia WOW: OPPO Reno...
Destiny Rising: quando un gioco mobile supera il gioco originale Destiny Rising: quando un gioco mobile supera il...
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
ASUS sperimenta GPU senza connettori di ...
La Cina conquisterà lo spazio ent...
Samsung ha un nuovo entry level: debutta...
Caos nei cieli europei: attacco informat...
Volkswagen ferma la produzione di ID.Buz...
Super sconti del weekend Amazon: 5 novit...
Dreame non si ferma più: tra le n...
Samsung Galaxy Buds3 FE a meno di 95€ su...
Praticamente regalate: 135€ per le Squie...
Si rinnovano i coupon nascosti di settem...
Amazon sconta i componenti: occasioni d'...
Vibe coding: esplode la domanda di esper...
Ring Intercom su Amazon: citofono smart ...
Addio regie complicate: un'AI gestir&agr...
Xbox, nuovo aumento dei prezzi negli Sta...
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: 14:33.


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