server in C[RISOLTO]

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
antonx
Prode Principiante
Messaggi: 142
Iscrizione: sabato 14 giugno 2014, 15:11

Re: server in C

Messaggio da antonx »

cioe tipo open(server/user.txt,O_RDONLY)?
bennes
Prode Principiante
Messaggi: 190
Iscrizione: lunedì 14 luglio 2014, 0:50
Desktop: KDE
Distribuzione: Linux Kubuntu 15.04 x86_64

Re: server in C

Messaggio da bennes »

Si, con i doppi apici ovviamente
Usate Google prima del forum ^^
antonx
Prode Principiante
Messaggi: 142
Iscrizione: sabato 14 giugno 2014, 15:11

Re: server in C

Messaggio da antonx »

capito ci provero
Ultima modifica di antonx il martedì 9 settembre 2014, 12:44, modificato 1 volta in totale.
antonx
Prode Principiante
Messaggi: 142
Iscrizione: sabato 14 giugno 2014, 15:11

Re: server in C

Messaggio da antonx »

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
bennes
Prode Principiante
Messaggi: 190
Iscrizione: lunedì 14 luglio 2014, 0:50
Desktop: KDE
Distribuzione: Linux Kubuntu 15.04 x86_64

Re: server in C

Messaggio da bennes »

Si, che problema c'è? Studiati strcat :P
Usate Google prima del forum ^^
antonx
Prode Principiante
Messaggi: 142
Iscrizione: sabato 14 giugno 2014, 15:11

Re: server in C

Messaggio da antonx »

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
antonx
Prode Principiante
Messaggi: 142
Iscrizione: sabato 14 giugno 2014, 15:11

Re: server in C

Messaggio da antonx »

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?
bennes
Prode Principiante
Messaggi: 190
Iscrizione: lunedì 14 luglio 2014, 0:50
Desktop: KDE
Distribuzione: Linux Kubuntu 15.04 x86_64

Re: server in C

Messaggio da bennes »

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.
Usate Google prima del forum ^^
antonx
Prode Principiante
Messaggi: 142
Iscrizione: sabato 14 giugno 2014, 15:11

Re: server in C

Messaggio da antonx »

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?
bennes
Prode Principiante
Messaggi: 190
Iscrizione: lunedì 14 luglio 2014, 0:50
Desktop: KDE
Distribuzione: Linux Kubuntu 15.04 x86_64

Re: server in C

Messaggio da bennes »

Ah capito! Scusami :) Assolutamente nel server! Il client inviera' solo utente e password scelti o cose del genere
Usate Google prima del forum ^^
antonx
Prode Principiante
Messaggi: 142
Iscrizione: sabato 14 giugno 2014, 15:11

Re: server in C

Messaggio da antonx »

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?
bennes
Prode Principiante
Messaggi: 190
Iscrizione: lunedì 14 luglio 2014, 0:50
Desktop: KDE
Distribuzione: Linux Kubuntu 15.04 x86_64

Re: server in C

Messaggio da bennes »

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 ^^
antonx
Prode Principiante
Messaggi: 142
Iscrizione: sabato 14 giugno 2014, 15:11

Re: server in C

Messaggio da antonx »

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?
bennes
Prode Principiante
Messaggi: 190
Iscrizione: lunedì 14 luglio 2014, 0:50
Desktop: KDE
Distribuzione: Linux Kubuntu 15.04 x86_64

Re: server in C

Messaggio da bennes »

scusa se ti sto dando delle noie
Tranquillo, se lo stessi facendo io non ti risponderei :P
sto trovando davvero molto difficile riuscirci
Le prime volte è cosi' ;)
omunque nel client alla fine dovrò limitarmi a mettere dei read dove mi aspettto che il server voglia comunicare con me giusto?
Si, ma anche delle write con cui dirai al server, quando necessario, le informazioni che l'utente digita.
Usate Google prima del forum ^^
antonx
Prode Principiante
Messaggi: 142
Iscrizione: sabato 14 giugno 2014, 15:11

Re: server in C

Messaggio da antonx »

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 :muro: :muro: sto perdendo la testa XD
Ultima modifica di antonx il martedì 9 settembre 2014, 12:45, modificato 1 volta in totale.
bennes
Prode Principiante
Messaggi: 190
Iscrizione: lunedì 14 luglio 2014, 0:50
Desktop: KDE
Distribuzione: Linux Kubuntu 15.04 x86_64

Re: server in C

Messaggio da bennes »

Puoi postare l'intero codice "a parte"?

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);
   }
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 :)
Usate Google prima del forum ^^
antonx
Prode Principiante
Messaggi: 142
Iscrizione: sabato 14 giugno 2014, 15:11

Re: server in C

Messaggio da antonx »

si scusa avevo gia corretto prima, metto tutto il codice qua?
antonx
Prode Principiante
Messaggi: 142
Iscrizione: sabato 14 giugno 2014, 15:11

Re: server in C

Messaggio da antonx »

Fatto
Ultima modifica di antonx il martedì 9 settembre 2014, 13:18, modificato 1 volta in totale.
bennes
Prode Principiante
Messaggi: 190
Iscrizione: lunedì 14 luglio 2014, 0:50
Desktop: KDE
Distribuzione: Linux Kubuntu 15.04 x86_64

Re: server in C

Messaggio da bennes »

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")
Usate Google prima del forum ^^
antonx
Prode Principiante
Messaggi: 142
Iscrizione: sabato 14 giugno 2014, 15:11

Re: server in C

Messaggio da antonx »

come posso risolvere?
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 17 ospiti