Sockets and InputStream

Status
Nicht offen für weitere Antworten.
S

sani

Gast
Hi

I want to move files (ascii and binarys) between two systems and have to use sockets for that. Now, I wrote this simple program (for test only):

Code:
import java.io.*;
import java.net.*;
import java.util.*;

public class Server
{

    public static void main(String[] args) throws IOException
    {
        String fileName = "note.txt";

        ServerSocket server = new ServerSocket(8080);
        FileInputStream fis = new FileInputStream(fileName);

        System.out.println("\nServer is ready: 8080\n");
       
        Socket client = server.accept();

        InputStream socketInput = client.getInputStream();
        OutputStream socketOutput = client.getOutputStream();
       
   
        // wait for ok (if n == 0)
        int n = socketInput.read();

        if (n == 0)
        {
            byte[] buffer = new byte[10];

            int count = 0;

            count = fis.read(buffer);

            while (count != -1)
            {
                // send data
                socketOutput.write(buffer);
                // read data from file again
                count = fis.read(buffer);
            }
        }

        // only to avoid closing of the 'socketOutput'
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter an int-number: ");
        sc.nextInt();
       
        socketOutput.close();
    }
}

And the client-class:

Code:
import java.io.*;
import java.net.*;
import java.util.*;

public class Client
{

    public static void main(String[] args) throws UnknownHostException,
            IOException
    {
        FileOutputStream fos = new FileOutputStream("C:/Temp/client/fileCopied.txt");

        Socket client = new Socket("127.0.0.1", 8080);

        OutputStream socketOutput = client.getOutputStream();
        InputStream socketInput = client.getInputStream();

        int n = 0;

        // send OK
        socketOutput.write(n);

        byte[] buffer = new byte[10];

        int count = 0;

        // read data
        count = socketInput.read(buffer);

        while (count != -1)
        {
            // write data into file
            fos.write(buffer);
            // read data from socket-InputStream again
            count = socketInput.read(buffer);  // here waits the client for new data!!!
        }

        fos.close();

        // only for debug
        Scanner sc = new Scanner(System.in);
        System.out.print("enter an int-number: ");
        int x = sc.nextInt();
    }
}

And now my problem:
The client is not able to recognize the end of the stream (-1). If I close the Server-OutputStream, the client is go on. Otherwise the client waits for new data to read. What I'm doing wrong? And, how to say the client, that the there are no more data, without closing the Server-OutputStream?

Tahnks for any help and HAPPY NEW YEAHR.
 

Grizzly

Top Contributor
On the start of the transmission, send the length of bytes of the file as an long. So the client knows the size of the file / the length of the transmission.

Happy New Year, too. :)
 
S

SlaterB

Gast
else you could send a special char-sequence to indicate a special situation,

else there is nothing to do, you can only send data or close the stream ;)

-------

hint:

if the Server reads at the end of a file the last 5 chars,
the byte-Array has the 5 new chars at postion 0-4 and 5 old ones at position 5-9 which you are sending the client,
the client cannot distinguish between old an new chars and writes all in the file!

->
Code:
while (count != -1) {
	// send data
	socketOutput.write(buffer,0,count);
	// read data from file again
	count = fis.read(buffer);
}


while (count != -1) {

	// write data into file
	fos.write(buffer,0,count);
				
	// read data from socket-InputStream again
   count = socketInput.read(buffer);
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Mehrere Server Sockets in einer Anwendung Java Basics - Anfänger-Themen 9
B Input/Output Dateien >65536B über Sockets übertragen Java Basics - Anfänger-Themen 12
StupidAttack Endlosschleife, Sockets Java Basics - Anfänger-Themen 2
M Sockets und Threads Java Basics - Anfänger-Themen 2
M Streams und Sockets Java Basics - Anfänger-Themen 3
P Streams mit Sockets Java Basics - Anfänger-Themen 7
A XML über Sockets Java Basics - Anfänger-Themen 5
A PrintWriter und Scanner bei Sockets Java Basics - Anfänger-Themen 2
P Programme für Sockets Java Basics - Anfänger-Themen 2
B Client - Server Verbindung über sockets mysql DB ansprechen? Java Basics - Anfänger-Themen 6
M Problem mit Sockets Java Basics - Anfänger-Themen 2
S Allgemeine Frage zu Sockets Java Basics - Anfänger-Themen 23
T Fernsteuerung mittels Sockets (Architektur okay?) Java Basics - Anfänger-Themen 4
S Sockets und Synchronisation Java Basics - Anfänger-Themen 7
M Sockets. Bekomm keine Antwort vom Server. Java Basics - Anfänger-Themen 7
D Multithread Sockets"Address already in use"Error Java Basics - Anfänger-Themen 11
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I Dateigröße von einem InputStream oder byte[] bekommen Java Basics - Anfänger-Themen 2
berserkerdq2 inputstream und bufferedwirter /outputstream und bufferedwriter Java Basics - Anfänger-Themen 9
T Bluetooth, Inputstream Java Basics - Anfänger-Themen 0
I InputStream beim zweiten Mal fehlerhaft Java Basics - Anfänger-Themen 10
B Inputstream in file schreiben? Java Basics - Anfänger-Themen 23
B InputStream / OutputStream / PipedOutputStream und managedExecutorService Java Basics - Anfänger-Themen 3
B java.io.OutputStream zu java.io.InputStream konvertieren Java Basics - Anfänger-Themen 18
B Hilfe bei InputStream To File Java Basics - Anfänger-Themen 22
B InputStream (PDF) nach Image (PNG / JPG) konvertieren? Java Basics - Anfänger-Themen 2
B Konvertieren: Outputstream zu Inputstream Java Basics - Anfänger-Themen 13
J Was genau macht die Methode close() im InputStream? Java Basics - Anfänger-Themen 5
E InputStream im Servlet wirft Exception Java Basics - Anfänger-Themen 5
D InputStream parsen und als Bilddatei abspeichern Java Basics - Anfänger-Themen 1
G Input/Output InputStream gibt nicht die Korrekten Werte aus Java Basics - Anfänger-Themen 10
T Datentypen InputStream to list of Int (or similar) Java Basics - Anfänger-Themen 4
P bytes aus einem InputStream zählen Java Basics - Anfänger-Themen 2
P InputStream eines Musik-Streams abspielen Java Basics - Anfänger-Themen 2
I Resize Image - Einlesen von InputStream Java Basics - Anfänger-Themen 3
T Input/Output Exception bei einem InputStream Java Basics - Anfänger-Themen 2
W ProcessBuilder InputStream in Array speichern Java Basics - Anfänger-Themen 3
K InputStream erstellen Java Basics - Anfänger-Themen 4
B Input/Output Data / Buffer / File Outstream Inputstream Java Basics - Anfänger-Themen 2
L Webservice soll InputStream übergeben bekommen Java Basics - Anfänger-Themen 7
S Eigener InputStream, Hilfe bei read-Methode Java Basics - Anfänger-Themen 6
C InputStream Java Basics - Anfänger-Themen 2
O Input/Output Fragen zum InputStream Java Basics - Anfänger-Themen 7
E Input/Output Relativer Bild-Pfad für InputStream Java Basics - Anfänger-Themen 5
G Frage zu InputStream? Java Basics - Anfänger-Themen 11
E Socket InputStream "terminiert" nicht Java Basics - Anfänger-Themen 4
E Input/Output Inputstream während der Laufzeit füllen Java Basics - Anfänger-Themen 2
A Frage zu Beispiel eines Dekorierers von InputStream Java Basics - Anfänger-Themen 4
B Input/Output InputStream (JSch) in OutputStream (Blob) überführen Java Basics - Anfänger-Themen 8
P Input/Output InputStream Listener? Java Basics - Anfänger-Themen 7
M Eigener InputStream will nicht mit BufferedReader Java Basics - Anfänger-Themen 3
S Input/Output Neuen InputStream System.in setzen Java Basics - Anfänger-Themen 11
A InputStream gibt nur jede 2te Zeile aus Java Basics - Anfänger-Themen 7
J InputStream FTP Java Basics - Anfänger-Themen 8
brunothg Inputstream zu Filechannel Java Basics - Anfänger-Themen 6
K StringWriter/String nach InputStream konvertieren Java Basics - Anfänger-Themen 3
Benji0815 Inputstream aus Konsole in JTextArea Java Basics - Anfänger-Themen 14
A Problem mit InputStream Java Basics - Anfänger-Themen 4
bastiann Kann man Inputstream nur auf ein Zeichen anwenden? Java Basics - Anfänger-Themen 5
U Inputstream.read()/readLine() blockiert immer Java Basics - Anfänger-Themen 18
S Problem mit url, inputStream und bytes beim Quellcode laden. Java Basics - Anfänger-Themen 6
G Kompletten InputStream der Kommandokonsole ausgeben Java Basics - Anfänger-Themen 8
G InputStream aufrufen, ändern und zurück geben Java Basics - Anfänger-Themen 2
W Zeichen ersetzen im InputStream Java Basics - Anfänger-Themen 3
N String vom InputStream in TextArea übertragen Java Basics - Anfänger-Themen 6
A Frage zu Puffergröße bei InputStream Java Basics - Anfänger-Themen 9
G in einem inputstream auf " " abfragen? Java Basics - Anfänger-Themen 3
M Datei speichern mittels InputStream Java Basics - Anfänger-Themen 13
P InputStream in Byte-Array speichern Java Basics - Anfänger-Themen 2
G String in InputStream umwandeln? Java Basics - Anfänger-Themen 8
M Auslesen eines InputStream Java Basics - Anfänger-Themen 4
M Problem mit InputStream Java Basics - Anfänger-Themen 7
S Probleme mit InputStream- Rückgabe Java Basics - Anfänger-Themen 4
I InputStream von Konsole abfangen Java Basics - Anfänger-Themen 6
G InputStream im finally-Block schließen Java Basics - Anfänger-Themen 7
K InputStream? Java Basics - Anfänger-Themen 3
M InputStream einer Socketverbindung funktioniert nicht Java Basics - Anfänger-Themen 19
M Byte InputStream zu Zeichenformat Unicode bzw String konvert Java Basics - Anfänger-Themen 5
R InputStream erstellen, der aus String liest Java Basics - Anfänger-Themen 8
R ENTER in InputStream nicht lesen Java Basics - Anfänger-Themen 4
G InputStream auslesen und zurückschreiben Java Basics - Anfänger-Themen 9
R BufferedReader <-> InputStream Java Basics - Anfänger-Themen 3
R Suche geeignetes InputStream Java Basics - Anfänger-Themen 2
D InputStream -> Image Java Basics - Anfänger-Themen 6
M String zu InputStream/InputSource Java Basics - Anfänger-Themen 2
S Problem mit InputStream / flush() / BufferedReader Java Basics - Anfänger-Themen 19
C Aus ein Image-Objekt einen InputStream generieren? Java Basics - Anfänger-Themen 6
J InputStream in String umwandeln Java Basics - Anfänger-Themen 5
J InputStream ist null Java Basics - Anfänger-Themen 7
P InputStream, BufferedString Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben