Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato
Nuova frontiera per i robot tagliaerba, con Ecovacs GOAT O1200 LiDAR Pro che riconosce l'ambiente in maniera perfetta, grazie a due sensori LiDAR, e dopo la falciatura può anche rifinire il bordo con il tagliabordi a filo integrato
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere?
Equilibrio e potenza definiscono il Samsung Galaxy S26+, un flagship che sfida la variante Ultra e la fascia alta del mercato con il primo processore mobile a 2nm. Pur mantenendo l'hardware fotografico precedente, lo smartphone brilla per un display QHD+ da 6,7 pollici d'eccellenza, privo però del trattamento antiriflesso dell'Ultra, e per prestazioni molto elevate. Completano il quadro la ricarica wireless a 20W e, soprattutto, un supporto software settennale
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti
Zeekr sbarca ufficialmente in Italia con tre modelli elettrici premium, X, 7X e 001, distribuiti da Jameel Motors su una rete di 52 punti vendita già attivi. La Zeekr X parte da 39.900 euro, la 7X da 54.100: piattaforma a 800V, chip Snapdragon di ultima generazione, ricarica ultraveloce e un'autonomia dichiarata fino a 615 km WLTP. Le prime consegne sono previste a metà aprile
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


Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
Recensione Samsung Galaxy S26+: sfida l'Ultra, ma ha senso di esistere? Recensione Samsung Galaxy S26+: sfida l'Ultra, m...
Zeekr X e 7X provate: prezzi, autonomia fino a 615 km e ricarica in 13 minuti Zeekr X e 7X provate: prezzi, autonomia fino a 6...
Marathon: arriva il Fortnite hardcore Marathon: arriva il Fortnite hardcore
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
DDL PMI, stop alle false recensioni: le ...
Classifiche JustWatch marzo: Una battagl...
iPhone Fold a rischio ritardo: problemi ...
Artemis II: raggiunto il punto più...
LG OLED e Hisense QLED da 85'' e 98'': s...
DJI Mini 5 Pro Fly More Combo a 862€: se...
Roborock Saros 10R a 899,99€: uno dei mi...
Samsung dice addio alla sua app Messaggi...
Moto G86 5G, Xiaomi Redmi 15, POCO X7 Pr...
Outlook Classic, risolto il bug delle em...
Netflix lancia Playground, una nuova app...
SpaceX lancerà i nuovi Pelican Ge...
Amazon Haul: -25% sul primo ordine con i...
Windows 11: Microsoft promette (ancora u...
NVIDIA non può più usare il suo stesso t...
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: 10:56.


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