server in C[RISOLTO]
Re: server in C
cioe tipo open(server/user.txt,O_RDONLY)?
Re: server in C
capito ci provero
Ultima modifica di antonx il martedì 9 settembre 2014, 12:44, modificato 1 volta in totale.
Re: server in C
sto provando a salvare i file in un altra cartella come hai detto tu però una volta che io faccio scrivere da input il nome utente ora per aprire quel file che sta nella cartella user dovrei fare tipo open("user/"buffer...) siccome nel buffer è contenuto il nome utente
Re: server in C
mi da problemi se faccio direttamente la open cosi open(buffer,"user/"...) ho risolto mettendo in un altra stringa "user/" ma mi sembra meno "elegante " cosi
Re: server in C
ok sto cominciando ad andare in panico:
mi è sorto un dubbio questo server deve gestire la registrazione,ora il mio dubbio è la registrazione viene fatta dal client è una volta registrata mandato qualcosa al server (come ho fatto io ma credo sia sbagliata) oppure gestito tutto dal server? il mio dubbio è questo ogni volta che il server vuole comunicare con il client io devo leggere sul socket quindi dovrò riempire il programma client di funzioni read?
mi è sorto un dubbio questo server deve gestire la registrazione,ora il mio dubbio è la registrazione viene fatta dal client è una volta registrata mandato qualcosa al server (come ho fatto io ma credo sia sbagliata) oppure gestito tutto dal server? il mio dubbio è questo ogni volta che il server vuole comunicare con il client io devo leggere sul socket quindi dovrò riempire il programma client di funzioni read?
-
- Prode Principiante
- Messaggi: 190
- Iscrizione: lunedì 14 luglio 2014, 0:50
- Desktop: KDE
- Distribuzione: Linux Kubuntu 15.04 x86_64
Re: server in C
Non capisco bene, forse per come è scritto il tuo problema.
Guarda quest'esempio ed utilizza netcat (nc) per connetterti.
L'esempio qui sopra di server fa tutto lui: registra e fa il login, anche se in un singolo file e non su piu' file.
Guarda quest'esempio ed utilizza netcat (nc) per connetterti.
L'esempio qui sopra di server fa tutto lui: registra e fa il login, anche se in un singolo file e non su piu' file.
Usate Google prima del forum ^^
Re: server in C
io ho due file client e server che comunicano tramite socket tcp,ora per fare la registrazione il codice della registrazione che controlla i file ecc ecc deve stare nel server o nel client?
-
- Prode Principiante
- Messaggi: 190
- Iscrizione: lunedì 14 luglio 2014, 0:50
- Desktop: KDE
- Distribuzione: Linux Kubuntu 15.04 x86_64
Re: server in C
Ah capito! Scusami Assolutamente nel server! Il client inviera' solo utente e password scelti o cose del genere
Usate Google prima del forum ^^
Re: server in C
però tipo dovrei fare una cosa del genere il client si connette al server tramite server sul socket scrivo cosa vuoi fare? il client dovrà scegliere tra login o registrazione mettiamo il caso scelga una delle due,il server ancora scriverà scrivi il nome utente e il client lo dovrà mandare questo sempre tramite socket,e il procedimento andrà avanti finche non avrò preso tutti i dati, quindi ci saranno miriadi di read e write capito che voglio dire?
-
- Prode Principiante
- Messaggi: 190
- Iscrizione: lunedì 14 luglio 2014, 0:50
- Desktop: KDE
- Distribuzione: Linux Kubuntu 15.04 x86_64
Re: server in C
Si esattamente. Devi fare così per forza (guardati la funzione ask del link poco sopra, potrebbe semplificarti la vita per quanto riguarda il server)
Usate Google prima del forum ^^
Re: server in C
scusa se ti sto dando delle noie ma sto trovando davvero molto difficile riuscirci,comunque nel client alla fine dovrò limitarmi a mettere dei read dove mi aspettto che il server voglia comunicare con me giusto?
-
- Prode Principiante
- Messaggi: 190
- Iscrizione: lunedì 14 luglio 2014, 0:50
- Desktop: KDE
- Distribuzione: Linux Kubuntu 15.04 x86_64
Re: server in C
Tranquillo, se lo stessi facendo io non ti risponderei :Pscusa se ti sto dando delle noie
Le prime volte è cosi'sto trovando davvero molto difficile riuscirci
Si, ma anche delle write con cui dirai al server, quando necessario, le informazioni che l'utente digita.omunque nel client alla fine dovrò limitarmi a mettere dei read dove mi aspettto che il server voglia comunicare con me giusto?
Usate Google prima del forum ^^
Re: server in C
come se non bastasse stamattina è comparso un nuovo errore,quando comunico sul socket tcp e il client legge escono delle scritte strane,le parole vengono troncate e poi mi escono stringhe che avevo in precedenza ti posto il codice di come scrivo e come leggo per farti vedere come faccio
nel client ho usato quel while perchè ho voluto evitare di scrivere tutte read e write,uscirà dal ciclo quando il server gli scriverà ok
sono riuscito a risolvere avevo dimenticato qualche memset ma una cosa strana se metto nel main la lettura va bene in una funzione a parte invece mi tronca le prime due parole sto perdendo la testa
nel client ho usato quel while perchè ho voluto evitare di scrivere tutte read e write,uscirà dal ciclo quando il server gli scriverà ok
sono riuscito a risolvere avevo dimenticato qualche memset ma una cosa strana se metto nel main la lettura va bene in una funzione a parte invece mi tronca le prime due parole sto perdendo la testa
Ultima modifica di antonx il martedì 9 settembre 2014, 12:45, modificato 1 volta in totale.
-
- Prode Principiante
- Messaggi: 190
- Iscrizione: lunedì 14 luglio 2014, 0:50
- Desktop: KDE
- Distribuzione: Linux Kubuntu 15.04 x86_64
Re: server in C
Puoi postare l'intero codice "a parte"?
E una cosa:
Questo è sbagliato. Il compito di memset è resettare il buffer in questo caso. Tu lo resetti giustamente, poi fai la read giustamente, ma poi lo resetti ancora. Ovviamente strcmp(buffer, "ok") non sarà mai == 0, perchè buffer è appena stato resettato
E una cosa:
Codice: Seleziona tutto
while(strcmp(buffer,"ok")!=0){
memset(buffer, 0, 400);
read(sd,buffer,100);
memset(buffer, 0, 400);
if(strcmp(buffer,"ok")!=0)
write(sd,buffer,100);
}
Usate Google prima del forum ^^
Re: server in C
si scusa avevo gia corretto prima, metto tutto il codice qua?
Re: server in C
Fatto
Ultima modifica di antonx il martedì 9 settembre 2014, 13:18, modificato 1 volta in totale.
-
- Prode Principiante
- Messaggi: 190
- Iscrizione: lunedì 14 luglio 2014, 0:50
- Desktop: KDE
- Distribuzione: Linux Kubuntu 15.04 x86_64
Re: server in C
1. il memset mettilo nel do, non fuori
2. Ogni volta che chiami memset, non devi dargli "strlen(buffer)", perchè questo sarebbe uguale ad un numero casuale. Infatti strlen(buffer) indica la lunghezza della stringa buffer, ma siccome è inizializzata, non si sa quanto sia! Devi mettere al suo posto "sizeof(buffer)", che ritorna la lunghezza effettiva dell'array.
3. Il tuo problema è dato dal fatto che i 3 byte che leggi per controllare se sono =="ok" ("o", "k", e "\0") li "mangi" alla stringa successiva. ("Inserisci" diventa "erisci")
2. Ogni volta che chiami memset, non devi dargli "strlen(buffer)", perchè questo sarebbe uguale ad un numero casuale. Infatti strlen(buffer) indica la lunghezza della stringa buffer, ma siccome è inizializzata, non si sa quanto sia! Devi mettere al suo posto "sizeof(buffer)", che ritorna la lunghezza effettiva dell'array.
3. Il tuo problema è dato dal fatto che i 3 byte che leggi per controllare se sono =="ok" ("o", "k", e "\0") li "mangi" alla stringa successiva. ("Inserisci" diventa "erisci")
Usate Google prima del forum ^^
Re: server in C
come posso risolvere?
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 17 ospiti