Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Abbiamo provato Google Pixel 11, il più accessibile della nuova gamma: chip Tensor G6 condiviso con i modelli Pro, fotocamera 48 MP con Magic Capture e Stili Fotografici, display Actua da 3000 nit e batteria da 4985 mAh. Ecco come si comporta nell'uso quotidiano, e cosa cambia davvero rispetto a Pixel 11 Pro e Pro XL
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL debutta in Italia con il nuovo Tensor G6, lo Zoom Pro fino a 120x, il display Super Actua da 3600 nit e la new entry HiLight riservata ai modelli Pro: lo abbiamo provato in anteprima per diversi giorni prima del lancio commerciale, tra fotocamera generativa, ricarica ancora indietro rispetto ai rivali e un prezzo che parte da 1399 euro
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti
Con un semplice dialogo in linguaggio naturale e la potenza di una scheda video di fascia alta è possibile costruire software funzionante da zero, senza scrivere una riga di codice e senza inviare un solo byte dei propri dati a server esterni
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-08-2006, 13:49   #1
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
[c++]chiarificazione char e *BYTE

allora devo avere una chiarificazione riguardo a char e *BYTE

un char è un insieme di byte dove char[1] è = 1 byte ovvero 8 bit... ok

sto sviluppando con winsock e invio per ora delle stringhe tipo:

char buf[512]="invio della stringa";
send(client[i].clientSocket,buf,(int)strlen(buf),0);
o anche
send(client[i].clientSocket,buf, sizeof(buf),0);

con questo sopra invio una sequenza di byte contenuti nel char buf... ok

ho sviluppato con Directplay e c'è una funzione che è:
DPN_BUFFER_DESC è un typedef della lib di directplay

nel mio programma sviluppato invece per winsock non posso usare questo typedef e vorrei fare una cosa simile per l'invio dei dati tramite winsock.

perchè dico questo perchè non devo inviare stringhe di char (cosa che ho fatto per provare il winsock) ma nell'invio dei dati in quell'unico send devo inviare una struttura tipo:

il dato inviato deve contenere il nome del player + una struttura che ne so per esempio la posizione di una matrice e anche altri dati.

con directplay si usa inviare dati così:

GAMEMSG_OKAY msgOkay;
msgOkay.idN = pMsg->idN; //numero id del player
lstrcpy( msgOkay.nome, pMsg->nome ); //nome del player
t_bikeData data; //struttura dati (float delle posizioni delle ruote)
msgOkay.Data = pMsg->Data; //posizioni delle ruote

DPN_BUFFER_DESC bufferDesc;
bufferDesc.dwBufferSize = sizeof(GAMEMSG_OKAY);
bufferDesc.pBufferData = (BYTE*) &msgOkay;
//invio dati
g_pDPClient->Send( &bufferDesc,...

ora tornando alla classica stringa da inviare con il winsock:

char buf[512]="invio della stringa";
send(client[i].clientSocket,buf,(int)strlen(buf),0);

ecco con questo sopra invio la stringa "invio della stringa"

mentre a me servirebbe sapere come eseguire il procedimento delle Directplay per il winsock così da inviare dati come BYTE e non char in quanto non devo appunto inviare solo una stringa di char

spero di essermi spiegato.
okay è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 13:57   #2
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
ho fatto delle prove per ora mi rispondo da solo... ma devo verificare:

buf = (BYTE*) &msgOkay; //struttura dati non arbitrari
send ((SOCKET), &buf, sizeof(GAMEMSG_OKAY), 0))

... vediamo
okay è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 14:05   #3
Marco Giunio Silano
Senior Member
 
L'Avatar di Marco Giunio Silano
 
Iscritto dal: Jun 2006
Città: Inverno: Novgorod. Estate: Haifa
Messaggi: 908
char, BYTE.... ma qual'è il tuo dubbio che non ho capito?
__________________
Hosti non solum dandam esse viam ad fugiendum, sed etiam muniendam / Ceterum censeo Carthaginem esse delendam / Et facere et pati fortia romanum est / Nemo Romanorum pacis mentionem habere dignatus est / Roma locuta, causa finita
Milla
Marco Giunio Silano è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 14:07   #4
Marco Giunio Silano
Senior Member
 
L'Avatar di Marco Giunio Silano
 
Iscritto dal: Jun 2006
Città: Inverno: Novgorod. Estate: Haifa
Messaggi: 908
Quote:
Originariamente inviato da okay

un char è un insieme di byte dove char[1] è = 1 byte ovvero 8 bit... ok
__________________
Hosti non solum dandam esse viam ad fugiendum, sed etiam muniendam / Ceterum censeo Carthaginem esse delendam / Et facere et pati fortia romanum est / Nemo Romanorum pacis mentionem habere dignatus est / Roma locuta, causa finita
Milla
Marco Giunio Silano è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 14:11   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Nota, in Win32, BYTE è un typedef per unsigned char. Quindi, a parte la questione del segno, un BYTE è un char.

Puoi fare senza problemi:
Codice:
GAMEMSG_OKAY gmo;
...
send (socket, (const char*) &gmo, sizeof(GAMEMSG_OKAY), 0);
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 14:13   #6
Marco Giunio Silano
Senior Member
 
L'Avatar di Marco Giunio Silano
 
Iscritto dal: Jun 2006
Città: Inverno: Novgorod. Estate: Haifa
Messaggi: 908
Quote:
Originariamente inviato da okay

char buf[512]="invio della stringa";

send(client[i].clientSocket,buf,(int)strlen(buf),0);
o anche
send(client[i].clientSocket,buf, sizeof(buf),0);
bè, non è proprio la stessa cosa... uno è la lunghezza della stringa, l'altro la dimensione...
__________________
Hosti non solum dandam esse viam ad fugiendum, sed etiam muniendam / Ceterum censeo Carthaginem esse delendam / Et facere et pati fortia romanum est / Nemo Romanorum pacis mentionem habere dignatus est / Roma locuta, causa finita
Milla
Marco Giunio Silano è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 14:15   #7
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da andbin
Nota, in Win32, BYTE è un typedef per unsigned char. Quindi, a parte la questione del segno, un BYTE è un char.

Puoi fare senza problemi:
Codice:
GAMEMSG_OKAY gmo;
...
send (socket, (const char*) &gmo, sizeof(GAMEMSG_OKAY), 0);

guarda ho fatto così ...

Codice HTML:
		DWORD dwBuffer;
		GAMEMSG_OKAY msgOkay;
        msgOkay.dwType = GAME_MSGID_OKAYIT;
	    msgOkay.idN = idN;
		dwBuffer = (BYTE*) &msgOkay;
send (client[i].clientSocket, &dwBuffer, sizeof(GAMEMSG_OKAY), 0);
...sto provando ma ho errori cmq ci dovrei essere.

grazie adesso integro il tuo code in attesa del giudizio per quello sopra...
okay è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 14:16   #8
Marco Giunio Silano
Senior Member
 
L'Avatar di Marco Giunio Silano
 
Iscritto dal: Jun 2006
Città: Inverno: Novgorod. Estate: Haifa
Messaggi: 908
Quote:
Originariamente inviato da okay

un char è un insieme di byte dove char[1] è = 1 byte ovvero 8 bit... ok
char, BYTE, è sempre la stessa cosa e non c'è bisogno che sposti la struttura in un buffer, fai un cast della struttura passandogli l'indirizzo e il sizeof della struttura
__________________
Hosti non solum dandam esse viam ad fugiendum, sed etiam muniendam / Ceterum censeo Carthaginem esse delendam / Et facere et pati fortia romanum est / Nemo Romanorum pacis mentionem habere dignatus est / Roma locuta, causa finita
Milla
Marco Giunio Silano è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 14:19   #9
Marco Giunio Silano
Senior Member
 
L'Avatar di Marco Giunio Silano
 
Iscritto dal: Jun 2006
Città: Inverno: Novgorod. Estate: Haifa
Messaggi: 908
DWORD dwBuffer;
GAMEMSG_OKAY msgOkay;
msgOkay.dwType = GAME_MSGID_OKAYIT;
msgOkay.idN = idN;
dwBuffer = (BYTE*) &msgOkay;
send (client[i].clientSocket, &dwBuffer, sizeof(GAMEMSG_OKAY), 0);
__________________
Hosti non solum dandam esse viam ad fugiendum, sed etiam muniendam / Ceterum censeo Carthaginem esse delendam / Et facere et pati fortia romanum est / Nemo Romanorum pacis mentionem habere dignatus est / Roma locuta, causa finita
Milla
Marco Giunio Silano è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 14:22   #10
Marco Giunio Silano
Senior Member
 
L'Avatar di Marco Giunio Silano
 
Iscritto dal: Jun 2006
Città: Inverno: Novgorod. Estate: Haifa
Messaggi: 908
Quote:
Originariamente inviato da okay
guarda ho fatto così ...

Codice HTML:
		DWORD dwBuffer;
		GAMEMSG_OKAY msgOkay;
        msgOkay.dwType = GAME_MSGID_OKAYIT;
	    msgOkay.idN = idN;
		dwBuffer = (BYTE*) &msgOkay;
send (client[i].clientSocket, &dwBuffer, sizeof(GAMEMSG_OKAY), 0);
...sto provando ma ho errori cmq ci dovrei essere.

grazie adesso integro il tuo code in attesa del giudizio per quello sopra...
perché nong uradi Okay che te l'ha fatto in una riga?
__________________
Hosti non solum dandam esse viam ad fugiendum, sed etiam muniendam / Ceterum censeo Carthaginem esse delendam / Et facere et pati fortia romanum est / Nemo Romanorum pacis mentionem habere dignatus est / Roma locuta, causa finita
Milla
Marco Giunio Silano è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 14:45   #11
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da Marco Giunio Silano
perché nong uradi Okay che te l'ha fatto in una riga?

si infatti và bene...l'avevo visto:

Codice HTML:
		GAMEMSG_OKAY msgOkay;
        msgOkay.dwType = GAME_MSGID_OKAYIT;
	    msgOkay.idN = idN;
send (client[i].clientSocket, (const char*) &msgOkay, sizeof(GAMEMSG_OKAY), 0);
grande grazie
okay è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 14:54   #12
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
volevo provare una cosa così ma non và:

BYTE* Buffer;
Buffer = (BYTE*) &msgOkay;
send (client[i].clientSocket, &Buffer, sizeof(GAMEMSG_OKAY), 0);

solo per curiosità...

così invece va bene:

BYTE* Buffer;
Buffer = (BYTE*) &msgOkay;
send (client[i].clientSocket, (const char*) &Buffer, sizeof(GAMEMSG_OKAY), 0);
... sempre (const char*) bisogna mettere


mentre in DP si usa:
g_pDPServer->SendTo( DPNID_ALL_PLAYERS_GROUP, &bufferDesc
... senza il (const char*)

probabilmente perchè &bufferDesc proviene dal typedef della lib delle DirectPlay



và bhe...! se non posso togliere il (const char*)... pazienza

Ultima modifica di okay : 02-08-2006 alle 15:07.
okay è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 15:26   #13
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
ora stavo provando la ricezione del const char*:

Codice HTML:
int bytes;
 bytes = recv(client[i].clientSocket, (const char*) &msgOkay, sizeof(GAMEMSG_OKAY), 0);
            if( (&msgOkay < sizeof(GAMEMSG_GENERIC) )
                break;
            GAMEMSG_GENERIC* pMsg = (GAMEMSG_GENERIC*) &msgOkay;
			if( pMsg->dwType == GAME_MSGID_OKAYIT ){

			}
come fare per riprendere i byte nella ricezione e gestirli??


ho fatto così e compila bene:
Codice HTML:
char* rec;
int bytes;
 bytes = recv(client[i].clientSocket, rec, sizeof(GAMEMSG_OKAY), 0);
            if( (sizeof(rec)) < sizeof(GAMEMSG_GENERIC) )
                break;
            GAMEMSG_GENERIC* pMsg = (GAMEMSG_GENERIC*) &msgOkay;
			if( pMsg->dwType == GAME_MSGID_OKAYIT ){

			}
che ne pensate???

Ultima modifica di okay : 02-08-2006 alle 15:30.
okay è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 15:46   #14
Marco Giunio Silano
Senior Member
 
L'Avatar di Marco Giunio Silano
 
Iscritto dal: Jun 2006
Città: Inverno: Novgorod. Estate: Haifa
Messaggi: 908
bè, che compila non significa che sia giusto. non ho sottomano nulla, com'è il propotipo della funzione?
__________________
Hosti non solum dandam esse viam ad fugiendum, sed etiam muniendam / Ceterum censeo Carthaginem esse delendam / Et facere et pati fortia romanum est / Nemo Romanorum pacis mentionem habere dignatus est / Roma locuta, causa finita
Milla
Marco Giunio Silano è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 16:02   #15
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da okay
volevo provare una cosa così ma non và:

BYTE* Buffer;
Buffer = (BYTE*) &msgOkay;
send (client[i].clientSocket, &Buffer, sizeof(GAMEMSG_OKAY), 0);

solo per curiosità...

così invece va bene:

BYTE* Buffer;
Buffer = (BYTE*) &msgOkay;
send (client[i].clientSocket, (const char*) &Buffer, sizeof(GAMEMSG_OKAY), 0);
... sempre (const char*) bisogna mettere
Nessuna delle 2 va bene!!! In Buffer metti l'indirizzo della struttura (e fin qui ok) ma poi alla send passi l'indirizzo di Buffer! Che è sbagliato, devi passare il contenuto di Buffer che è l'indirizzo della struttura!

Quindi al massimo puoi fare:

send (client[i].clientSocket, (const char*) Buffer, sizeof(GAMEMSG_OKAY), 0);

senza &!!

In ogni caso puoi anche evitare di passare per un BYTE*.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 16:17   #16
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da andbin
Nessuna delle 2 va bene!!! In Buffer metti l'indirizzo della struttura (e fin qui ok) ma poi alla send passi l'indirizzo di Buffer! Che è sbagliato, devi passare il contenuto di Buffer che è l'indirizzo della struttura!

Quindi al massimo puoi fare:

send (client[i].clientSocket, (const char*) Buffer, sizeof(GAMEMSG_OKAY), 0);

senza &!!

In ogni caso puoi anche evitare di passare per un BYTE*.

si andbin è giusto come dici.... infatti il send è OK.

adesso invece per la recv:

Non ho errori di compilazione ma ho un errore quà:
if( pMsg->dwType == GAME_MSGID_OKAYIT ){

se mi aiuti forse ci riesco il problema non è di codice ma di struttura dunque per la ricezione di quella const char* benedetta inviata (i dati inviati sono giusti idN = 0 e mess = "okay")

ricezione:

Codice HTML:
char *rec;
int bytes;
 bytes = recv((SOCKET)wParam, rec, sizeof(GAMEMSG_OKAY), 0);
 if( (sizeof(rec)) < sizeof(GAMEMSG_GENERIC) )
				    return TRUE;
 

 GAMEMSG_GENERIC* pMsg = (GAMEMSG_GENERIC*) sizeof(rec);

	if( pMsg->dwType == GAME_MSGID_OKAYIT ){
	if( (sizeof(rec)) != sizeof(GAMEMSG_OKAY) )
                     return TRUE;
				
            GAMEMSG_OKAY* pMsg = (GAMEMSG_OKAY*) sizeof(rec);

	    idN = pMsg->idN; //recupero i dati della struct
	lstrcpy(NomePlayer, pMsg->mess);//nome player "okay" per provare
			}
ho cambiato con
char rec[512];

ma ho l'errore in quell'if

ora faccio altre prove
okay è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 16:27   #17
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
primo errore corretto:

char rec[512];
e
GAMEMSG_GENERIC* pMsg = (GAMEMSG_GENERIC*) &rec;


L' ULTIMO ERRORE da correggere è:
if( (sizeof(rec)) != sizeof(GAMEMSG_OKAY) )

cioè non è un errore ma esce dall'if

Ultima modifica di okay : 02-08-2006 alle 16:29.
okay è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 16:46   #18
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
funziona tutto
però ho dovuto togliere il controllo se la dimensione è uguale alla struttura questo per i malintezionati che con un tool o telnettando si posso loggare conoscendo la porta e l'ip e inviare dei dati fasulli facendo collassare il server.

quindi mettendo che i dati arrivati corrispondono ai dati della struttura, accetta la rec, se non esci.

if( (sizeof(rec)) < sizeof(GAMEMSG_GENERIC) )
return TRUE;

questo sopra passa

if( (sizeof(rec)) != sizeof(GAMEMSG_OKAY) )
return TRUE;

questo sopra non passa ed esce... strano

se commento questo
// if( (sizeof(rec)) != sizeof(GAMEMSG_OKAY) )
// return TRUE;

idN = pMsg->idN;
lstrcpy(NomePlayer, pMsg->mess);
E' PERFETTO idN=0 e mess="okay"

anche

if( pMsg->dwType == GAME_MSGID_OKAYIT )

vale 10 come la define GAME_MSGID_OKAYIT
okay è offline   Rispondi citando il messaggio o parte di esso
Old 02-08-2006, 16:51   #19
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Che coglione

l'avevo pure messa per usarla e invece come al solito.........

corretto:

int bytes;
bytes = recv((SOCKET)wParam, rec, sizeof(GAMEMSG_OKAY), 0);
if( (bytes) < sizeof(GAMEMSG_GENERIC) )
...
if( (bytes) != sizeof(GAMEMSG_OKAY) )

ora è okay

grazie amici
okay è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre Recensione Google Pixel 11: non ha l'HiLight dei...
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship Google Pixel 11 Pro XL: fotocamera al top, batte...
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti Non sai programmare? Ecco cosa si può far...
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto Recensione Samsung Galaxy Z Fold8 Ultra: il pieg...
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Godox lancia due accessori per fotografi...
Nova Lake-S da 28 core a 296 W: pi&ugrav...
Adobe Firefly rende disponibili per tutt...
Si torna a lavoro, e torna disponibile E...
PlayStation 6 e Xbox Project Helix verso...
Oltre un terzo delle pagine web pubblica...
Bosoni e fermioni nella stessa goccia: i...
Guerra alle targhe polacche: diventer&ag...
LinkedIn, oltre un milione di utenti ha ...
Odissea oltre 1,34 miliardi: nessun viet...
Il robot impara gesti osservando per poc...
Windows 11, chi ha rotto i giochi? Micro...
Golden Axe diventa una serie animata com...
HyperX presenta Cloud Alpha Air, le prim...
Grok continua a esfiltrare le chat: xAI ...
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: 17:03.


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