Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-11-2008, 20:22   #1
MrModd
Senior Member
 
L'Avatar di MrModd
 
Iscritto dal: Apr 2007
Messaggi: 924
[C++/C] Problemi nell'uso delle Winsock

Salve gente,
ho un problema che non riesco a risolvere...
sto usando su un programma fgetc() (della libreria standard del C) e send() (delle winsock).
C'è questo problema:
io dovrei prendere un carattere da un file con "variabile=fgetc(file);" e inviare il carattere attraverso "send(socket, variabile, 1,0)". Il problema è che sono due tipi di variabili differenti: fgetc() salva su una char, mentre send() vuole in ingresso una const char*.
Come fò?

Ho provato in questi modi:
Codice:
send(socket, &((const char)variabile),1,0);
send(socket, &((const char*)variabile),1,0);
send(socket, ((const char*)variabile),1,0);
send(socket, variabile,1,0);
ma niente, davano errore.


Poi mi spieghereste cosa sono le variabili con puntatore e quando si usa l'asterisco e quando la & prima della variabile?
__________________
The Dark Side of The MODD
Il mio album su Flickr
Linux User #479003
MrModd è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2008, 20:30   #2
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
L'unica che non hai provato, cioè questa:

send(socket, &variabile , 1, 0);

Spiegarti cosa è l'operatore di dereference (&) è semplice, ottieni l'indirizzo della variabile alla sua destra.
Spiegarti invece l'operatore *, le variabili puntatore e i mille usi che se ne vuole fare credo che ti convenga leggerlo su un libro.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2008, 20:56   #3
MrModd
Senior Member
 
L'Avatar di MrModd
 
Iscritto dal: Apr 2007
Messaggi: 924
Quote:
Originariamente inviato da cionci Guarda i messaggi
L'unica che non hai provato, cioè questa:

send(socket, &variabile , 1, 0);

Spiegarti cosa è l'operatore di dereference (&) è semplice, ottieni l'indirizzo della variabile alla sua destra.
Spiegarti invece l'operatore *, le variabili puntatore e i mille usi che se ne vuole fare credo che ti convenga leggerlo su un libro.
e non funziona comunque...
Io ho questa struttura:
Codice:
char variabile;
do
{
  variabile=fgetc(file);
  send(socket, &file,1,0);
  fputs(&tmp, log);
}
while (variabile==10)
Ma non mi esce mai dal ciclo e il file log si riempie in pochi secondi di caratteri che non esistono in "file".

Riguardo alla &, cosa significa ottenere l'indirizzo? Non vado a chiede alla variabile cosa contiene ma vado dove è memorizzata e me la leggo da solo?
E poi & e * sono collegati?
__________________
The Dark Side of The MODD
Il mio album su Flickr
Linux User #479003
MrModd è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 02:53   #4
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
Quote:
Originariamente inviato da MrModd Guarda i messaggi
e non funziona comunque...
Io ho questa struttura:
Codice:
char variabile;
do
{
  variabile=fgetc(file);
  send(socket, &file,1,0);
  fputs(&tmp, log);
}
while (variabile==10)
Ma non mi esce mai dal ciclo e il file log si riempie in pochi secondi di caratteri che non esistono in "file".
Ci credo, è sbagliato

send(socket, &variabile,1,0);
fputc(tmp, log);

Con & ottieni appunto l'indirizzo dove è memorizzata la variabile. Una variabile puntatore serve appunto a contenere un indirizzo. Comunque te l'ho detto: sono cose che non si possono improvvisare, per spiegare l'utilizzo dei puntatori servono due capitoli di un libro
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 13:09   #5
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Sì, fidati di quel che ti ha detto Cionci: quando un neofita inizia lo studio della programmazione da zero, e si trova davanti per la prima volta il concetto di puntatore e i vari usi che se ne fanno, di solito ci mette un bel po' a inghiottirlo e digerirlo per bene.

E' una cosa fondamentale sapere cosa sono e come e quando e perchè si usano i puntatori: non puoi raccattare una parvenza di conoscenza qui, se la cosa ti interessa sul serio, è necessario un buon libro.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 20:20   #6
MrModd
Senior Member
 
L'Avatar di MrModd
 
Iscritto dal: Apr 2007
Messaggi: 924
Oki, per i puntatori leggerò qualcosa di più esteso, ma il programma continua a funzionare...
Si blocca sempre lì, scrive tante "ÿ" nel file ma non va avanti.
__________________
The Dark Side of The MODD
Il mio album su Flickr
Linux User #479003
MrModd è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2008, 21:14   #7
MrModd
Senior Member
 
L'Avatar di MrModd
 
Iscritto dal: Apr 2007
Messaggi: 924
Ho individuato l'errore (penso):
il fatto è che io dovrei leggere il file fino a che non c'è un ritorno a capo, ma il ciclo condizionale non lo vede.
Io ho messo while (variabile!=10) perchè 10 è il valore decimale per in ritorno a capo, ma il ciclo continua lo stesso.

Vi faccio vedere meglio com'è questo pezzo di programma:
Codice:
rewind(file);
while (controllo==false || variabile!=EOF)
{
  variabile=fgetc(file);
  if (variabile==10)   //questa condizione dovrebbe accadere se c'è un ritorno a capo
  {
    variabile=fgetc(file);
    if (variabile==10) controllo==true;
  }
}
controllo==false;
while (controllo==false || variabile!=EOF)
{
  variabile=fgetc(file);
  if (variabile==10)
  {
    variabile=fgetc(file);
    if (variabile=='a')
    {
      variabile=fgetc(file);
      if (variabile==10) controllo=true;
    }
  }
}
Da qui quindi io dovrei prendere il file e leggerlo finchè non trovo una riga vuota. A questo punto è pronto per leggere il resto del file fino a che non trova in una riga il carattere "a" e una riga vuota.
Poi nel caso non li trova il ciclo dovrebbe comunque finire perchè raggiunge l'EOF. Il problema è che scorre in entrambi i cicli tutto il file.

Avete capito più o meno il problema?
__________________
The Dark Side of The MODD
Il mio album su Flickr
Linux User #479003
MrModd è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2008, 09:10   #8
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
while (controllo==false && variabile!=EOF)

Sta dentro il while fino a quanto una delle due condizioni non è verificata. Con l'or sta dentro il while fino a quando entrambe le condizioni non sono verificate.
Se ci spieghi cosa stai cercando di fare possiamo dirti come farlo in poche linee con il C++.

Metti così: variabile == '\n'
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2008, 18:44   #9
MrModd
Senior Member
 
L'Avatar di MrModd
 
Iscritto dal: Apr 2007
Messaggi: 924
Oh ecco, ho risolto finalmente, oltre a quell'errore di aver messo || al posto di && avevo fatto un errore di sintassi: avendo trasformato un do - while in un while, mi ero scordato di togliere il ; alla fine della condizione...
Comunque il programma è un client per l'invio della posta molto rudimentale: su un file imposto, seguendo uno schema ben preciso, tutti i dati necessari per l'invio dell'email e poi, dopo una riga vuota, il corpo del messaggio comprensivo di header. Il programma invia l'email e salva un log in un altro file.
Tutto qui, ma per me è un gran passo.
Ora devo solo fare delle modifiche per introdurre un controllo negli errori che da il server.
__________________
The Dark Side of The MODD
Il mio album su Flickr
Linux User #479003
MrModd è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
LG OLED evo AI C5 48 pollici in offerta ...
Le 14 offerte migliori su Amazon oggi, l...
Telnet dimenticato: una falla critica es...
Doom gira su cuffie in-ear: puoi provarl...
Ryzen AI Max+: secondo Intel non hanno s...
Galaxy Z Flip7 Olympic Edition: lo smart...
Patch di emergenza per Microsoft Office:...
Google Pixel 10 Pro al minimo storico su...
Highguard debutta con numeri record, ma ...
Offerte Tineco Amazon: scope elettriche ...
Apple rilascia iOS 26.2.1 e iPadOS 26.2....
NVIDIA presenta Earth-2: il sistema AI c...
iPhone 5s si aggiorna dopo 13 anni dal l...
Meta al lavoro per introdurre degli abbo...
Warcraft, Diablo e Overwatch: saranno 4 ...
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: 12:57.


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