Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    259

    [C] Interazione server/client tramite shell

    Eccomi qua con il problema delle socket.
    Sto implementando una rubrica telefonica e ho scritto tutte le funzioni necessarie.
    Ora è il momento della connessione client/server che mi sta creando qualche problema nella loro comunicazione.
    La parte della connessione è stata creata e il server accetta e attende richieste da parte del client. Ora il mio problema riguarda l'interazione da parte del client con la rubrica.
    Praticamente le funzioni che ho scritto stanno all'interno del file funzioni.c che risiede nella macchina del server (giustamente!).
    Ora la mia domanda è la seguente.
    C'è un modo per far collegare il client direttamente al file funzioni.c? Oppure ogni operazione la deve leggere in background il server ed inviarla al client sul proprio terminale (shell di linux)?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma cosa deve fare il client e cosa il server?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    259
    Praticamente il server deve gestire le richieste del client. Queste richieste riguardano modifiche di una rubrica o visualizzazioni.
    Il client può:
    1)Aggiungere un contatto;
    2)Modificare un contatto;
    3)Visualizzare un contatto;
    4)Visualizzare la rubrica;
    5)Cancellare un contatto;
    6)Uscire dalla rubrica.

    All'avvio della connessione tra server e client il primo chiede al secondo se vuole accedere con login per effettuare modifiche o sonza login non potendo effettuare modifiche.

    Una volta scelto l'indice corrispondente effettuando il login accede alle scelte sopraelencate, invece se non effettua il login accede a scelte che permettono soltanto di fare delle visualizzazioni senza poter modificare niente.

    Tutte queste operazioni sono delel funzioni gia belel e pronte che devono solo essere eseguite.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Le funzioni saranno eseguite solamente sul server. Nel client quel codice non ti serve perché è sufficiente il codice per la comunicazione e la presentazione dei dati.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    259
    Quindi tutte le printf che avevo messo nel codice delle funzioni per poter visualizzare sul terminale i risultati le devo trasformare in printf verso il client?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    I dati dovranno essere inviati dal client al server e viceversa tramite apposite funzioni (send/receive). Quello che riceverai dal server. lo mostrerai sul client tramite printf.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    259
    Le funzioni che ci ha mostrato il professore a lezione sono la write() e la read().
    Esistono anche altre funzioni? Praticamente quello in cui sono bloccato io sono è il seguente problema, io ho questo codice che appena viene lanciata la connessione tra server e client dovrebbe apparire sul terminale del client:
    codice:
        int login(){
        int a, b='n', scelta;
        printf("\n\n\n\n\nScegli un azione inserendo il numero corrispondente\n");
        printf("*********************************************************\n");
        printf("1. Accesso con autenticazione\n");
        printf("2. Accesso senza autenticazione\n");
        printf("0. Uscita\n");
        printf("*********************************************************\n");
        if(scanf("%d",&scelta)==0){
        	scelta=-1;
      		int ch;
        	while((ch=getchar())!='\n' && ch!=EOF);
        	b='s';
    	}
    	else{
        	switch (scelta){
        		case 0: /*Usicta dal login*/
        		printf("\n\nArrivederci!\n\n");
        		break;
        	
        		case 1:/*Accesso con autenticazione*/
       			autenticazione();
       	 		break;
        	
       			case 2:/*Accesso senza autenticazione*/
      	 		presentazione2();
       			menu2();
        		break;
        	
        		default:/*Riaccede al login per inserimento indice errato*/
        		printf("\n\nHai inserito un indice inesistente, riprova!\n\n");
        		{
        		int ch;
        		while((ch=getchar())!='\n' && ch!=EOF);
        		}
        		login();
        		break;
        	}
        }
        if(b=='s'){
       		printf("\n\nQuello che hai inserito non è un numero!\n\n");
       		login();
       	}
    	return 0;	
    }
    Come faccio a far visualizzare tutta la seguente funzione sul client? O meglio tutte le printf? Le dovrei visualizzare sul terminale del client come se le visualizzassi in remoto sul server stesso.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Questo codice lo esegui nel client e dovrebbe servire ad effettuare il login al server (a parte quella chiamata ricorsiva della login che ti ho già detto essere sbagliata).

    Il collegamento e lo scambio dati dovrebbe avvenire nella funzione

    autenticazione()

    che chiami all'interno (e di cui non si sa nulla).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    259
    Quindi mentre gira sul terminale del client il programma contemporaneamente gira anche sul terminale del server? Me lo chiedo perchè tutte le funzioni che ho fatto hanno come ritorno return 0 dato che prelevano soltanto dati o inseriscono dati all'interno del file rubrica.txt e tramite delle printf fanno vedere sul terminale i risultati ottenuti.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Mi sa che questa discussione potrebbe andare avanti ore senza riuscire a fugare tutti i tuoi dubbi.

    Quando c'è una interazione client/server su socket esiste sempre un programma in esecuzione sul server e uno che viene eseguito sul client e questi comunicano (scambiano dati che possono rappresentare informazioni e/o comandi). Al limite, i due programmi possono girare sullo stesso PC ma la cosa non cambia.

    Quindi dovrai prevedere un programma "client" e un programma "server" separati.

    E' possibile che dovrai approfondire un po' di più le tue conoscenze sulla programmazione di rete client/server prima di continuare il tuo programma.

    In ogni caso, mi sa che questa discussione sta diventando un po' troppo confusa e generica dato che non c'è un vero e proprio problema ben preciso.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.