Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di reo
    Registrato dal
    Apr 2004
    Messaggi
    27

    [Java] Connessione Socket

    Ciao a tutti,
    spero che qualcuno possa aiuttarmi perché stò diventando matto
    Devo trasferire 2 array di 8748 byte da un server a un client tramite socket....

    -----------------------------------------------------
    byte[] low = new byte[8784];
    ServerSocket serverSocket = new ServerSocket(5000);
    ...
    OutputStream out = clientSocket.getOutputStream();
    out.write(low,0,low.length);
    out.flush();
    -----------------------------------------------------

    La connessione funziona correttamente, il problema é che non mi manda tutto l'array ma solo in parte! Avete una soluzione a questo problema?

    grazie x l'aiuto

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Strano che ti mandi solamente parte dell'array. Ho visto che hai inserito, giustamente, una riga di codice che richiama il metodo flush() e questo dovrebbe, appunto, risolvere i problemi riguardanti la bufferizzazione.

    Prova a chiudere lo stream di output subito dopo aver effettuato il trasferimento, oppure a chiudere l'intera socket.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di reo
    Registrato dal
    Apr 2004
    Messaggi
    27
    Si si, alla fine chiudo il socket, ma niente!
    ho provato un sistema del genere:

    ...
    out.write(low,0,1000);out.flush();
    out.write(low,1000,1000);out.flush();
    out.write(low,2000,1000);out.flush();
    ...

    e in lettura...
    ...
    in.read(low,0,1000);
    in.read(low,1000,1000);
    ...

    ma niente risultati...

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Prova ad utilizzare la versione abbreviata del metodo write():
    codice:
    out.write(low);
    e prova a verificare se così facendo vengono trasferiti tutti i byte. In caso negativo, controlla se per caso tu non abbia commesso un errore in digitazione nella costruzione dell'array di lettura (magari dimensionandolo in modo errato). Credo, comunque, che non sia necessario dimensionare l'array di lettura, in quanto viene automaticamente inizializzato (e quindi anche dimensionato) durante la lettura.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di reo
    Registrato dal
    Apr 2004
    Messaggi
    27
    OK, grazie, provo a dare un'occhiata, ma ho paura che il problema sia dovuto alla grandezza fisica del buffer che non può caricare più di tot bit.

    ciao

  6. #6
    Utente di HTML.it L'avatar di reo
    Registrato dal
    Apr 2004
    Messaggi
    27
    niente da fare... manda 1380 byte e poi java.io.IOException...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.