Autore Topic: Socket non risponde  (Letto 407 volte)

Offline ticemamarz

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Socket non risponde
« il: 23 Gennaio 2015, 19:33:22 CET »
0
Salve ragazzi,
io ho un problema che non riesco a risolvere. Nella mia applicazione devo collegarmi ad un server (non java) per fare delle comunicazioni con un dispositivo. Nella mia app ho creato la connessione socket e questa si connette al server però quando invio dei dati (decine di byte) il server delle volte non mi risponde.
Qualcuno di voi può aiutarmi?

Se evete bisogno di altre informazioni basta chiedere.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Socket non risponde
« Risposta #1 il: 23 Gennaio 2015, 20:58:35 CET »
0
posta un po di codice. Che server è?

Io so anche che se usi UDP non sai dove e se arriveranno mai i pacchetti

Offline ticemamarz

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Re:Socket non risponde
« Risposta #2 il: 26 Gennaio 2015, 10:57:59 CET »
0
Postare il codice mi risulta difficile dato che si tratta di un'applicativo che sto sviluppando per un'azienda e non posso postare codice.
Per quanto riguarda il SERVER a cui mi connetto sono dei dispositivi di rete (tipo questo http://www.moxa.com/product/nport_5110.htm) i quali hanno una modalità di funzionamento che permettono di essere utilizzati come server in ascolto su una determinata porta. Ad ognuno di questi dispositivi è associato un indirizzo DynDNS; quindi io con la mia applicazione mi collego a questo indirizzo e alla determinata porta sulla quale questo è in ascolto.
Diverse volte quando invio dei dati dal client (Applicazione) al server (dispositivo Moxa) non ricevo una risposta; i dati non arrivano anche se aspetto 20 secondi (che mi sembra già un tempo abbastanza lungo).
So che su Java il metodo  InputStream.available() mi indica quanti dati ci sono in arrivo anche se ho letto che il numero che fornisce potrebbe non essere veritiero. Inffati nella mia applicazione verifico che questo numero sia maggiore di zero e poi vado a leggere byte per byte.
Ho provato anche a leggere direttamente con il metodo InputStream.ReadByte() e impostare un timeout di lettura ma siamo sempre punto e a capo.
Ora le opzioni sono due:

1) quando invio i dati al server arrivano in maniera spezzettata e con un tempo di latenza l'uno dall'altro che il server va in timeout e non riconosce più i dati che gli invio

o

2) che il server mi risponde ma il socket non so per quale motivo non li vede.

Di solito io la comunicazione con il server la tengo sempre attiva. Ho provato anche ad aprirla dopo ogni messaggio che invio e chiuderla dopo ogni risposta che ricevo (o se va in timeout) ma la storia non cambia.

 

Offline boymask2000

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    ubuntu
Re:Socket non risponde
« Risposta #3 il: 18 Febbraio 2015, 13:25:50 CET »
0
Ciao

hai provato a fare un flush sull'OutputStream del socket ?