Torna indietro   Hardware Upgrade Forum > Software > Programmazione

 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
MiniLED di fascia media con local dimming a 192 zone, 144 Hz nativi e audio firmato Devialet. La prova strumentale riscontra colori affidabili e gaming reattivo, per un prodotto molto accessibile e convincente. Ma la soundbar aggiuntiva è quasi d'obbligo
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Amazon porta i colori sul suo Kindle da scrittura più grande: schermo Colorsoft a 11 pollici, processore quad-core, penna premium più reattiva e strumenti IA per le note, sono le note salienti. Il salto di prezzo rispetto al modello in bianco e nero si fa sentire, anche se la percezione è quella di trovarsi di fronte a un prodotto di fascia altissima, per veri appassionati
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
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


 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
Google cambia i backup di Android: ora p...
Alla scoperta di Aiper, robot pulisci pi...
OPPO Reno16, Pro e FS ufficiali: super b...
Saltato l'accordo con BOE: i top di gamm...
Insta360 X4 Air a 299€ invece di 399€: &...
Vinton Cerf lascia Google dopo oltre ven...
Beats Studio Buds+ a 94,99€ (-52%): auri...
Mac Studio, refresh nel 2026 e nuova gen...
BioShocking mette in difficoltà i...
Oral-B iO 2 in doppio pacchetto a 69,99€...
Core Zen 6 Low Power: il primo impiego p...
Torna a 169,99€ su Amazon la sedia ergon...
Il segreto di Blackwell non è l'h...
Oltre 1,2 miliardi dalle criptovalute: i...
Anthropic presenta Claude Science: l'IA ...
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: 09:16.


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