PDA

View Full Version : Problema col socket su windows


ppaizansky
01-04-2010, 11:07
Ciao a tutti
Sono un uovo utente, mi presento sono papizansky.
Vi scrivo perchè ho veramente bisogno di alcune dritte su un progetto che devo fare.

Realizzare un sistema di prenotazioni di biglietti aerei: un server pubblica un insieme di partenze (partenza, destinazione, data). Diversi client si connettono e fanno le prenotazioni di un biglietto alla volta. Se il biglietto non viene confermato la prenotazione scade dopo X (scegliete voi) secondi e cancellata dagli elenchi del server altrimenti il biglietto diventa non piu' disponibile per gli altri client. 1 biglietto non puo' essere prenotato da 2 o piu' client nello stesso momento.

Adesso per la creazione di una semplice comunicazione tra un client e u server sono riuscito a implementarli ma nn li posso mettere in comunicazione perche nn dispongo di due pc.

il mio problema piu grande è come inserisco una lista di pseudo voli all'interno del server in modo tale che mettendolo in ascolto i vari client possano prenotare il volo.I voli devono avere [(partenza, destinazione, data)].
Poi ci sarebbe il problema della collisione, ma questa è una cosa che con un po di tempo riusciro a fare.

grazie anticipatamente.
naturalemte avendo letto il forum nn voglio la soluzione del progetto, ma cnhe qualche link su come poter risolvere il mio problema ecco, o quelche dritta.

lupoxxx87
01-04-2010, 11:30
a parte che non si capisce cosa stai cercando e di nemmeno cosa hai bisogno...

con che linguaggi lavori ? cosa stai realizzando ? web service / applicazione server / applicazione server-client ...

la domanda fondamentale è ... perchè ?

bobbytre
01-04-2010, 11:34
Puoi utilizzare software di virtualizzazione visto che non hai a disposizione 2 computer, ti installi sulla macchina virtuale un sistema operativo , avvi il tuo server , e lo fai comunicare col tuo client.

Prova a dare un occhiata a VirtualBox (http://www.virtualbox.org/) , VirtualPC (http://www.microsoft.com/windows/virtual-pc/) o VmWare (http://www.vmware.com/it/)

nuovoUtente86
01-04-2010, 12:25
Puoi utilizzare software di virtualizzazione visto che non hai a disposizione 2 computer, ti installi sulla macchina virtuale un sistema operativo , avvi il tuo server , e lo fai comunicare col tuo client.

Prova a dare un occhiata a VirtualBox (http://www.virtualbox.org/) , VirtualPC (http://www.microsoft.com/windows/virtual-pc/) o VmWare (http://www.vmware.com/it/)

lavorare su localhost no?

nuovoUtente86
01-04-2010, 12:27
il mio problema piu grande è come inserisco una lista di pseudo voli all'interno del server in modo tale che mettendolo in ascolto i vari client possano prenotare il volo.I voli devono avere [(partenza, destinazione, data)].
prevedere un pannello amministrativo sotto forma di shell o in veste grafica?

Poi ci sarebbe il problema della collisione, ma questa è una cosa che con un po di tempo riusciro a fare.
che poi è la parte più interessante del progetto.

ppaizansky
01-04-2010, 12:29
Avete ragione scusatemi.
Allora devo realizzare il progetto per il professore, su C++.
E' un applicazione client-server.
Il fatto che di informatica ho solo i concetti base fatti al primo anno di ingegneria quindi sto cercando di farmi da auto didatta, ma nn grandi risultati.

lupoxxx87
01-04-2010, 12:34
quindi vuoi una sorta di applicazione ?

perchè la situazione, a mio parere, si prestava di più per un servizio/applicazione web...

ppaizansky
01-04-2010, 12:38
Lui mi ha detto che posso svolgerlo a mio piacere.
Ma per quello che abbiamo fatto a lezione credo richiedesse una cosa ddel tipo client server.

Il fatto prencipale è che la materia C++ nn è fondamentale nel mio corso di studi, lo è di piu java, quindi oltre che capire cosa fare sto cercando di riprendermi quello che fatto con C ai tempi.

Ho un agiuda per il C ma è quella da cui studiavo, nn è un vero manuale.
Sapresti indicarmene uno?

tomminno
01-04-2010, 13:03
Tutto quello che devi fare è definire un protocollo di comunicazione tra client e server. Potresti usare XML ma dovresti imparare l'utilizzo di una qualche libreria (Xerces, Expat o magari Xsd che ti mappa automaticamente un xml su un oggetto usando una di queste 2 librerie), oppure un altro protocollo più semplice specifico per il tuo caso tipo un protocollo binario con indicazione di inizio/fine comando e separatore tra parametri.
Per il server devi trovare un modo per memorizzare i voli disponibili e le prenotazioni anche qui potresti affidarti a dei semplici file di testo oppure xml oppure ad un semplice database quale Sqlite.
Infine ti ci vuole il codice per la realizzazione di un server e un client, in giro trovi tonnellate di esempi per questo.

Comunque non hai bisogno di 2 computer. Puoi far funzionare tutto sulla stessa macchina, basta che imposti il client in modo che si connetta a 127.0.0.1 sulla porta del server.

ppaizansky
01-04-2010, 13:09
Ho gia impostato il cliente su quella porta, ma naturalmete mi dice file non trovato, credo si riferisca al fatto che nn puo comunicare col server, problema che ora provero a sistemare.
Avevo pensato anche io a dei file di testo, infatti li ho gia creati, ma nn so come impostarli per inserirli nel server ecco, scusa il mio gerco poco tecnico.
Ho gia implementato un server e un cliente ma semplici ora volevo lavorare su quelli per raggiungere la soluzione.
Che mi consigliare mi conviene?

nuovoUtente86
01-04-2010, 13:18
Ho gia impostato il cliente su quella porta, ma naturalmete mi dice file non trovato, credo si riferisca al fatto che nn puo comunicare col server, problema che ora provero a sistemare.
qualcuno (il client), si connette a qualcosa (server) su un half-socket (definito da ip e porta) se su tale indirizzo il server stesso fa binding, ovvero resta in ascolto.

ppaizansky
01-04-2010, 13:21
si perfetto.
Ho gia messo il server in binding, ma sto cercando adesso di capire come inserire le liste aeree all'inerno del server, che proprio nn vuole entrami in testa.

bobbytre
01-04-2010, 13:26
lavorare su localhost no?

non sarebbe altrettanto emozionante :D

nuovoUtente86
01-04-2010, 13:26
si perfetto.
Ho gia messo il server in binding, ma sto cercando adesso di capire come inserire le liste aeree all'inerno del server, che proprio nn vuole entrami in testa.

fare un client amministrativo, che piuttosto che fruire il servizio, lo gestisce occupandosi di inserimenti ed eventuali altre operazioni necessarie.
Puoi farlo sia come layer locale sul server, che con la stessa logica remota degli altri client.

ppaizansky
01-04-2010, 14:46
Ragazzi per realizzare la lista avevo pensato una cosa.

Allora ho realizzato un programma in C++ semplice con una lista dove ho inserito le specifiche dei voli che sono richieste.
In pratica questo programma nn fa altro che fornire all'untente un schermata dei voli disponibili, l'utente accede, richiede il volo e se dopo T secondi, l'ho fatto con un ciclo for che decrementa un contatore, gli fa annullare la prenotazione, e da solo sembra funzionare.
Quello che voglio fare io, ma che nn sto riuscendo è questo.

Nel momento in cui il client si connette al server egli gli mostra questa schermata tutto qua, quindi dovrei realizzare una funzione che mi richiami questo programma, ma nn so come fare.
Credete sia possibile o mi sto complicando la vita?
E solo che vedo altra soluzione.

Cmq è ovvio che anche se ogni messaggio nn lo ripeto io vi ringrazio tutti dell'aiuto che mi state dando.

nuovoUtente86
01-04-2010, 14:56
credo che tu abbia sbagliato la logica architetturale.
Il server deve limitarsi, coerentemente con il protocollo scelto, a passare la lista dei voli al client, che avrà dentro di se il livello presentazione per l' utente. Gestire i timeout con un for è veramente brutto.