Sono un profano per quanto riguarda la programmazione in rete, ma mi hanno dato un lavoro da fare e mi sono bloccato in un punto che ora vi spiego.
Devo creare un listener che ascolta su una porta i messaggi che gli arrivano da un client (in futuro potrebbero essere più di uno) e mandare messaggi in risposta.
Il client in questione è una postazione 3M Self Check System per fare il prestito automatico nelle biblioteche.
Ho il client che mi manda i messaggi. Non so come sia programmato il client perché non ho i sorgenti.
Per il listener mi sono affidato al codice di esempio che trovate qui http://msdn.microsoft.com/en-us/library/fx6588te.aspx opportunamente modificato nella parte che gestisce la ricezione di messaggi ed invia il messaggio corretto.
Come vi ho detto, sono un profano ed utilizzando il codice così com'è succedeva che il client dava sempre errore di connessione: ho scoperto che il problema era dovuto alle righe
handler.Shutdown(SocketShutdown.Both)
handler.Close()
che trovate scorrendo il codice.
Commentate queste righe, il client da segni di vita e mostra la prima schermata che deve mostrare.
I problemi nascono a questo punto: dal client devo inviare al listener un altro messaggio (il codice della tessera del lettore, il messaggio viene opportunamente formattato dal client). Al momento di farlo, al listener non arriva niente e il client rimane "appeso" salvo poi rinunciare all'invio del messaggio dando errore di "troppi tentativi".
Inoltre accade questo: quando cerco di fermare il client, l'operazione è impossibile a meno che non fermo manualmente il listener (cosa che non deve accadere) e il client si ferma subito.
Mi hanno un programma di test (senza i codici sorgente) e con questo programma tutto funziona, mentre io non riesco a far funzionare il mio codice.
Sono bloccato in questo punto. Come mi suggerite di procedere?
Grazie.