BufferedInputStream#read

Status
Nicht offen für weitere Antworten.

The_S

Top Contributor
Hi,

mein Server empfängt von einem Client Daten mittels einem BufferedInputStream.

Code:
BufferedInputStream buffy = new BufferedInputStream(client.getInputStream());
while (!client.isClosed()) {
	while ((curChar = buffy.read()) != -1) {
		readIn = new StringBuilder();
		readIn.append((char)curChar);
		while ((curChar = buffy.read()) != -1) {
			readIn.append((char)curChar);
			System.out.print((char)curChar);
			System.out.println(curChar);
		}
		message = readIn.toString();
		System.out.println(message);
// andere Sachen
}

In der dritten While Schleife wird noch alles korrekt ausgegeben. Er springt auch raus sobald -1 zurückgegeben wird. Nur springt er da dann scheinbar auch aus der 2. Schleife raus, weil das System.out.println(message) und alle nachkommenden Befehle einfach ignoriert werden. Steh da grad ein wenig auf dem Schlauch ... ???:L
 

The_S

Top Contributor
Nö, kann man das auch ohne zusätzliche Tools? Bin hier auf das nötigste beschränkt (JDK und Notepad :x ) und kann auch nichts installieren ...
 

The_S

Top Contributor
jup, hab ich. Habs auch gefunden. Versuch mich gerade ein wenig durchzuwursteln ... Bis jetzt ist das dabei rausgekommen:

jdb hat gesagt.:
main[1] step
>
Step completed: "thread=main", Server.acceptClients(), line=44 bci=87
44 while ((curChar= buffy.read()) != -1) {

main[1] step
>
Step completed: "thread=main", Server.acceptClients(), line=45 bci=99
45 readIn.append((char)curChar);

main[1] step
>
Step completed: "thread=main", Server.acceptClients(), line=46 bci=107
46 System.out.print((char)curChar);

main[1] step
a>
Step completed: "thread=main", Server.acceptClients(), line=47 bci=116
47 System.out.println(curChar);

main[1] step
97>
Step completed: "thread=main", Server.acceptClients(), line=48 bci=124
48 }

main[1] step
>
Step completed: "thread=main", Server.acceptClients(), line=44 bci=87
44 while ((curChar= buffy.read()) != -1) {

main[1] step
>
Step completed: "thread=main", Server.acceptClients(), line=45 bci=99
45 readIn.append((char)curChar);

main[1] step
>
Step completed: "thread=main", Server.acceptClients(), line=46 bci=107
46 System.out.print((char)curChar);

main[1] step
n>
Step completed: "thread=main", Server.acceptClients(), line=47 bci=116
47 System.out.println(curChar);

main[1] step
> 110
Step completed: "thread=main", Server.acceptClients(), line=48 bci=124
48 }

main[1] step
>
Step completed: "thread=main", Server.acceptClients(), line=44 bci=87
44 while ((curChar= buffy.read()) != -1) {

main[1] step
> step
Nothing suspended.

Das sind jetzt mal die zwei letzten Durchläufe bevor er nichts mehr macht. Hilft mir jetzt net sonderlich viel weiter, wüsste auch nicht was ich sonst noch überprüfen sollte ...

Das merkwürdige ist (habs ma mit System.out.println's gestestet), dass er sich weder in der Ersten, noch in der Zweiten noch in der Dritten Schleife befindet ...
 

Stiewen

Aktives Mitglied
Aloa Leutz,

also... Leutz, ... ich mag ja nicht hochnäsig klingen oder so ... kann ja auch sein, dass ich was falsch verstanden oder gelesen hab, aber wenn man mal so nen bissel code weglässt...
Code:
while (!client.isClosed()) {
   while ((curChar = buffy.read()) != -1) {
      while ((curChar = buffy.read()) != -1) {
      ...
      }
...
}
dann ist doch logisch, dass er aus allen raus geht, denn -1 wird doch nur übertragen, wenn das Socket geschlossen wurde... also sind die beiden inneren Schleifen false und die äußere dann auch, denn das Socket is zu...

berichtigt mich bitte, wenn ich falsch liege...

THX, Stiewen
 

The_S

Top Contributor
[edit] Kommando zurück!!!

scheint als müsste man doch den Socket schließen ... *mist* wie kann ich das sonst lösen? Kann keine Reader und Writer verwenden ... :?
 

Stiewen

Aktives Mitglied
1. stimmte das jetzt, was ich sagte?
2. was willst du eigentlich machen? Dateien übertragen? dann wäre das doch so weit erst mal ok ... verbesserungswürdig, aber ok ...
 

The_S

Top Contributor
Hatte gestern ein wenig Erfahrungen mit einem anderen (erfahreneren) Java programmierer ausgetauscht. Dieser meinte, dass der InputStream ja Bytes liest und da Bytes bekanntlich nicht negativ sein können, kann er auch nur -1 zurückgeben wenn der Stream geschlossen wird.

Außerdem hat er gemeint ich solle es mal mit dem ObjectOutputStream/ObjectInputStream versuchen. Sobald ich dazu gekommen bin es zu testen sag ich nochmal bescheid (kann aber dauern ;) ).

@ Stiewen

jup, will Dateien übertragen.
 

Stiewen

Aktives Mitglied
gib mal die Adresse von dem Typen! :-D

na, das hat mir aber auch schon mal einer erzählt aus diesem Forum, glaube es war ein Admin ...
Also lag ich ja gar nicht mal so falsch ;-)
Poste doch bitte deinen Source zum Übertragen hier ins Forum ... ich zB. bräuchte sowas auch noch ...

THX
Stiewen
 

The_S

Top Contributor
Stiewen hat gesagt.:
Poste doch bitte deinen Source zum Übertragen hier ins Forum ... ich zB. bräuchte sowas auch noch ...

Wie jetzt? Den kompletten Source :shock:

oder nur den zur Datenübertragung?

Muss dich aber momentan bei beiden enttäuschen, da ich festgestellt habe, dass es das Beste ist wenn ich mein Prog nochmal komplett neu aufziehe, kann also noch ein wenig dauern ;).
 

Stiewen

Aktives Mitglied
ach ja... kenn ich doch irgendwoher ;-)

nein, nur die Datenübertragung

was solls denn werden? ein Chatprog mit Datatransfer?

Stiewen
 

flanker

Aktives Mitglied
Hi,
warte noch ein wenig mit dem umschreiben :)

Hobbit_Im_Blutrausch hat gesagt.:
Hi,

mein Server empfängt von einem Client Daten mittels einem BufferedInputStream.

Code:
BufferedInputStream buffy = new BufferedInputStream(client.getInputStream());

//was auch immer und wofür auch immer ist [flanker]
//kann u.U. zusätzliche, unnötige loops produzieren [flanker]
while (!client.isClosed()) { ////Schleife-0 [flanker]

        //hier liest du den ersten char from buffy [flanker]
	readIn = new StringBuilder();  //hier damit [flanker]
	int currChar; // int sollte es sein, read() gibt ein int zurück dann aber auch die Auswertung anpassen[flanker]
	while ((curChar = buffy.read()) != -1) {  //Schleife-1 [flanker]
      		//readIn = new StringBuilder(); //weg [flanker]
		//readIn.append((char)curChar); [flanker]

		//und hier den zweiten aus dem gleichen buffy bis zu ende [flanker]
		//diese schleife ist überflüssig [flanker]
		/* [flanker]
		while ((curChar = buffy.read()) != -1) {
			readIn.append((char)curChar);
			System.out.print((char)curChar);
			System.out.println(curChar);
		}
		message = readIn.toString(); //weg [flanker]
		System.out.println(message);  //weg [flanker]
                */

        } //ende //Schleife-1 [flanker]
	message = readIn.toString();//hier damit [flanker]
	System.out.println(message);//hier damit [flanker]

// andere Sachen
}//Schleife-0

So ungefähr, getestet habe nicht.



sollet ebenfalls funktionieren:
Code:
BufferReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
  System.out.println(inputLine);
  //oder irgendwo hinschreiben
}
in.close();

oder so:
Code:
BufferedInputStream br = new BufferedInputStream(progressIn);
byte[] arr = new byte[br.available() ];
br.read(arr);
br.close();
String txt = new String(arr);

ja, und byte hat auch negative werte :)
 

The_S

Top Contributor
flanker hat gesagt.:

Hi, danke für die Antwort!

flanker hat gesagt.:
warte noch ein wenig mit dem umschreiben :)

zu spät ... (Außerdem lags nicht nur an der Geschichte)

flanker hat gesagt.:
So ungefähr, getestet habe nicht.

Was hast du jetzt großartig anders gemacht, dass deines theoretisch gehen sollte und meines nicht?

flanker hat gesagt.:
sollet ebenfalls funktionieren:
Code:
BufferReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
  System.out.println(inputLine);
  //oder irgendwo hinschreiben
}
in.close();
)

Ähm, nein. Ich möchte wie gesagt Dateien versenden, das wird mit nem BufferedReader wohl nicht funktionieren.

flanker hat gesagt.:
ja, und byte hat auch negative werte :)

Es geht hier nicht um das byte als Datentyp in Java, sondern um das Byte als Speichereinheit (sprich 8 Bit)
 

flanker

Aktives Mitglied
Hobbit_Im_Blutrausch hat gesagt.:
...
Was hast du jetzt großartig anders gemacht, dass deines theoretisch gehen sollte und meines nicht?

Kommentare gelesen?
ist eh zu spät...

EDIT:
ja, mit BufferedReader hast du recht, anderen posts habe übersehen, in deinem code ging es um String.
 

flanker

Aktives Mitglied
Code:
File outputFile = new File("file.txt");
FileOutputStream out = new FileOutputStream(outputFile);
BufferedInputStream buffy = new BufferedInputStream(client.getInputStream());

int currChar;
while ((curChar = buffy.read()) != -1) {  // hier wird irgendwann -1 geliefert
    out.write(currChar);
}
buffy.close();
out.close();
 

The_S

Top Contributor
ok, hab jetzt mal zwei komplette Klassen zum Testen geschrieben:

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

public class TestServer {
	
	ServerSocket server = null;
	Socket client = null;
	
	public TestServer(int port) throws IOException {
		
		server = new ServerSocket(port);
		listen();
	}
	
	public void listen() throws IOException {
		
		while (true) {
			client = server.accept();
			new Thread(new Runnable() {
				public void run() {
					try {
						Socket cl = client;
						int curChar = 0;
						PrintStream ps = new PrintStream(cl.getOutputStream(), true);
						BufferedInputStream buffy = new BufferedInputStream(cl.getInputStream()); 
						while (!cl.isClosed()) {
							while ((curChar = buffy.read()) != -1) {
								ps.write(curChar);
								System.out.println("Sende " + (char)curChar);
							}
						}
						System.out.println("Socket closed");
					}
					catch (IOException e) {
						e.printStackTrace();
					}
				}
			}).start();
		}
	}
	
	public static void main(String[] args) {
		
		try {
			new TestServer(3456);
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}
}

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

public class TestClient {
	
	Socket me = null;
	BufferedInputStream in = null;
	PrintStream out = null;
	
	public TestClient(String host, int port) throws IOException {
		
		me = new Socket(host, port);
		in = new BufferedInputStream(me.getInputStream());
		out = new PrintStream(me.getOutputStream(), true);
		listen();
		write();
	}
	
	public void listen() throws IOException {
		
		new Thread(new Runnable() {
			public void run() {
				try {
					int curChar = 0;
					while (!me.isClosed()) {
						while ((curChar = in.read()) != -1) {
							System.out.print((char)curChar);
						}
						System.out.println("Nichts zu tun");
					}
					System.out.println("Client closed");
				}
				catch (IOException e) {
					e.printStackTrace();
				}
			}
		}).start();
	}
	
	public void write() {
		
		out.print("Hallo, blup");
		System.out.println("gesendet");
	}
	
	public static void main(String[] args) {
		
		try {
			new TestClient("localhost", 3456);
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Nachdem ich mich scheinbar verdammt blöd anstelle dein Beispiel umzusetzen, würde ich dich bitten den Beispielcode oben so umzuschreiben das er funktioniert. Danke :)
 

The_S

Top Contributor
lass dir nur Zeit, bin ja eh momentan am Umschreiben, ist deshalb sowieso größtenteils nur der Neugierde wegen!
 

flanker

Aktives Mitglied
also, deine klassen funktionieren im grossen und ganzen,
hier eine minimal geänderte variante:
Code:
import java.net.*;
import java.io.*;

public class TestServer {

  ServerSocket server = null;
  Socket client = null;

  public TestServer(int port) throws IOException {
    server = new ServerSocket(port);
    listen();
  }

  public void listen() throws IOException {

    while (true) {
      client = server.accept();
      new Thread(new Runnable() {
        public void run() {
          try {
            Socket cl = client;
            PrintStream ps = new PrintStream(cl.getOutputStream(), true);
            BufferedInputStream buffy = new BufferedInputStream(cl.getInputStream());
            int curChar;
            while ((curChar = buffy.read()) != -1) {
              ps.write(curChar);
              System.out.println("Empfange Zeichen: " + (char)curChar);
            }
          }
          catch (IOException e) {
            System.out.println("Client closed");
          }
        }
      }).start();
    }
  }

  public static void main(String[] args) {

    try {
      new TestServer(3456);
    }
    catch (IOException e) {
      e.printStackTrace();
    }
  }
}

und zweite:


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

public class TestClient {

  Socket me = null;
  BufferedInputStream in = null;
  PrintStream out = null;

  public TestClient(String host, int port) throws IOException {

    me = new Socket(host, port);
    in = new BufferedInputStream(me.getInputStream());
    out = new PrintStream(me.getOutputStream(), true);
    listen();
    write();
  }

  public void listen() throws IOException {

    new Thread(new Runnable() {
      public void run() {
        try {
          int curChar = 0;
          while ((curChar = in.read()) != -1) {
            System.out.print((char)curChar);
          }
        }
        catch (IOException e) {
          System.out.println("Server closed");
        }
      }
    }).start();
  }

  public void write() {
    // einige mal senden:
    for (int i = 0; i < 10; i++) {
      System.out.println(" ");
      System.out.println("Sende String: ");
      out.println("Hallo, blup");

      try {
        Thread.sleep(2000); //mal pause einlegen
      }
      catch (Exception ex) {}
    }
    System.out.println("ich habe fertig!");
  }

  public static void main(String[] args) {

    try {
      new TestClient("localhost", 3456);
    }
    catch (IOException e) {
      e.printStackTrace();
    }
  }
}
 

The_S

Top Contributor
Leider muss ich dich enttäuschen, auch deine Version sendet niemals -1. Denn wenn dem so wäre, müsste er ja die Schleife verlassen und an dieser Stelle (mit Kommentar markiert) in der TestClient Klasse

Code:
  public void listen() throws IOException { 

    new Thread(new Runnable() { 
      public void run() { 
        try { 
          int curChar = 0; 
          while ((curChar = in.read()) != -1) { 
            System.out.print((char)curChar); 
          }
          System.out.println("Bin durch ..."); // diese Stelle ist gemeint/neuer Code
        } 
        catch (IOException e) { 
          System.out.println("Server closed"); 
        } 
      } 
    }).start(); 
  }

"Bin durch" ausgeben. Macht er aber nicht.
 

flanker

Aktives Mitglied
um mal -1 zu sehen, hier die Serverklasse:


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

public class TestServer {

  ServerSocket server = null;
  Socket client = null;

  public TestServer(int port) throws IOException {
    server = new ServerSocket(port);
    listen();
  }

  public void listen() throws IOException {

    while (true) {
      client = server.accept();
      new Thread(new Runnable() {
        public void run() {
          try {
            Socket cl = client;
            PrintStream ps = new PrintStream(cl.getOutputStream(), true);
            BufferedInputStream buffy = new BufferedInputStream(cl.getInputStream());
            int curChar;
            //while ((curChar = buffy.read()) != -1) {
            while (true) {
              curChar = buffy.read();
              ps.write(curChar);
              System.out.println("Empfange Zeichen: " + (char)curChar + ",   int-wert: " + curChar);
              if (curChar == -1) break;
            }
            System.out.print("Ende der Schleife!");
          }
          catch (IOException e) {
            System.out.println("Client closed");
          }
        }
      }).start();
    }
  }

  public static void main(String[] args) {

    try {
      new TestServer(3456);
    }
    catch (IOException e) {
      e.printStackTrace();
    }
  }
}
 

The_S

Top Contributor
Ähm, ja ... und wo ist die Minus 1 jetzt?

Würd gern mal deine Ausgabe auf der Konsole sehen. Hab bei mir kein einziges -1 gesehen und die beiden Streams (Server/Client) hängen sich immernoch auf, wenn das Ende erreicht ist.
 

flanker

Aktives Mitglied
Client:

Sende String:
Hallo, blup

Sende String:
Hallo, blup

Sende String:
Hallo, blup
ich habe fertig!
Server closed
Press any key to continue...

Server:
Empfange Zeichen: H, int-wert: 72
Empfange Zeichen: a, int-wert: 97
Empfange Zeichen: l, int-wert: 108
Empfange Zeichen: l, int-wert: 108
Empfange Zeichen: o, int-wert: 111
Empfange Zeichen: ,, int-wert: 44
Empfange Zeichen: , int-wert: 32
Empfange Zeichen: b, int-wert: 98
Empfange Zeichen: l, int-wert: 108
Empfange Zeichen: u, int-wert: 117
Empfange Zeichen: p, int-wert: 112
, int-wert: 13:
Empfange Zeichen:
, int-wert: 10
Empfange Zeichen: H, int-wert: 72
Empfange Zeichen: a, int-wert: 97
Empfange Zeichen: l, int-wert: 108
Empfange Zeichen: l, int-wert: 108
Empfange Zeichen: o, int-wert: 111
Empfange Zeichen: ,, int-wert: 44
Empfange Zeichen: , int-wert: 32
Empfange Zeichen: b, int-wert: 98
Empfange Zeichen: l, int-wert: 108
Empfange Zeichen: u, int-wert: 117
Empfange Zeichen: p, int-wert: 112
, int-wert: 13:
Empfange Zeichen:
, int-wert: 10
Empfange Zeichen: H, int-wert: 72
Empfange Zeichen: a, int-wert: 97
Empfange Zeichen: l, int-wert: 108
Empfange Zeichen: l, int-wert: 108
Empfange Zeichen: o, int-wert: 111
Empfange Zeichen: ,, int-wert: 44
Empfange Zeichen: , int-wert: 32
Empfange Zeichen: b, int-wert: 98
Empfange Zeichen: l, int-wert: 108
Empfange Zeichen: u, int-wert: 117
Empfange Zeichen: p, int-wert: 112
, int-wert: 13:
Empfange Zeichen:
, int-wert: 10
Empfange Zeichen: ?, int-wert: -1
Ende der Schleife!



hier nochmal die klassen:

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

public class TestClient {

  Socket me = null;
  BufferedInputStream in = null;
  PrintStream out = null;

  public TestClient(String host, int port) throws IOException {

    me = new Socket(host, port);
    in = new BufferedInputStream(me.getInputStream());
    out = new PrintStream(me.getOutputStream(), true);
    listen();
    write();
  }

  public void listen() throws IOException {

    new Thread(new Runnable() {
      public void run() {
        try {
          int curChar = 0;
          while ((curChar = in.read()) != -1) {
            System.out.print((char)curChar);
          }
        }
        catch (IOException e) {
          System.out.println("Server closed");
        }
      }
    }).start();
  }

  public void write() {
    // einige mal senden:
    for (int i = 0; i < 3; i++) {
      System.out.println(" ");
      System.out.println("Sende String: ");
      out.println("Hallo, blup");

      try {
        Thread.sleep(1000); //mal pause einlegen
      }
      catch (Exception ex) {}
    }
    System.out.println("ich habe fertig!");
    out.close();
  }

  public static void main(String[] args) {

    try {
      new TestClient("localhost", 3456);
    }
    catch (IOException e) {
      e.printStackTrace();
    }
  }
}



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

public class TestServer {

  ServerSocket server = null;
  Socket client = null;

  public TestServer(int port) throws IOException {
    server = new ServerSocket(port);
    listen();
  }

  public void listen() throws IOException {

    while (true) {
      client = server.accept();
      new Thread(new Runnable() {
        public void run() {
          try {
            Socket cl = client;
            PrintStream ps = new PrintStream(cl.getOutputStream(), true);
            BufferedInputStream buffy = new BufferedInputStream(cl.getInputStream());
            int curChar;
            //while ((curChar = buffy.read()) != -1) {
            while (true) {
              curChar = buffy.read();
              ps.write(curChar);
              System.out.println("Empfange Zeichen: " + (char)curChar + ",   int-wert: " + curChar);
              if (curChar == -1) break;
            }
            System.out.print("Ende der Schleife!");
          }
          catch (IOException e) {
            System.out.println("Client closed");
          }
        }
      }).start();
    }
  }

  public static void main(String[] args) {

    try {
      new TestServer(3456);
    }
    catch (IOException e) {
      e.printStackTrace();
    }
  }
}
[/quote]
 

The_S

Top Contributor
OK, die unterschiedliche Ausgabe kommt daher, dass du im TestClient noch was verändert hast. Du hast den Stream nämlich noch geschlossen. Natürlich bekomm ich so auch die -1, weil dann der Stream zu ist. Aber ich kann nicht einfach den Stream schließen, das schließt den Socket gleich mit und ich muss mich jedesmal neu connecten was nicht Sinn der Sache seien kann und es auch nicht ist.
 

flanker

Aktives Mitglied
ok, ich habe das problem nicht ganz verstanden,
du willst stream offen halten und dabei auch am ende jeder sendung eof(-1) lesen?
wenn ja, muss ich passen, weiss ich nicht ob es geht.
 

The_S

Top Contributor
flanker hat gesagt.:
ok, ich habe das problem nicht ganz verstanden,

hab ich mir mittlerweile schon fast gedacht ... :wink:

flanker hat gesagt.:
du willst stream offen halten und dabei auch am ende jeder sendung eof(-1) lesen?

richtig

flanker hat gesagt.:
wenn ja, muss ich passen, weiss ich nicht ob es geht.

macht nichts, trotzdem herzlichen Dank für deine Bemühungen ... :toll: :D
 

The_S

Top Contributor
Stiewen hat gesagt.:
Poste doch bitte deinen Source zum Übertragen hier ins Forum ... ich zB. bräuchte sowas auch noch ...

Mal das wichtigste ... (ist jetzt aus meiner Applikation gerissen, aber ich denke man versteht was vor sich geht ansonsten einfach fragen ;) )

Server:
Code:
public class DataTransferServer {
	
	ServerController sc = null;
	OOSStorage ooss = null; 
	ServerSocket server = null;
	Socket client = null;
	
	public DataTransferServer(ServerController sc, int port) {
		
		try {
			this.sc = sc;
			ooss = new OOSStorage();
			server = new ServerSocket(port);
			listenToPort();
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	private void listenToPort() throws IOException {
		
		while (true) {
			client = server.accept();
			new Thread(new Runnable() {
				public void run() {
					Socket thisClient = client;
					try {
						ooss.add(thisClient, new ObjectOutputStream(thisClient.getOutputStream()));
						ObjectInputStream ois = new ObjectInputStream(thisClient.getInputStream());
						Object obj = null;
						while (!thisClient.isClosed()) {
							if ((obj = ois.readObject()) != null) {
								ooss.getOOS(sc.getClient(obj.toString())).writeObject(ois.readObject());							}
						}
					}
					catch (IOException e) {
						e.printStackTrace();
					}
					catch (ClassNotFoundException e) {
						e.printStackTrace();
					}
				}
			}).start();
		}
	}
}

Client:
Code:
public class DataTransferClient {
	
	DataTransferController controller = null;
	Socket me = null;
	ObjectOutputStream oos = null;
	ObjectInputStream ois = null;
	
	public DataTransferClient(DataTransferController controller, String host, int port) {
		
		try {
			this.controller = controller;
			me = new Socket(host, port);
			oos = new ObjectOutputStream(me.getOutputStream());
			ois = new ObjectInputStream(me.getInputStream());
			listenToPort();
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	private void listenToPort() {
		
		new Thread(new Runnable() {
			public void run() {
				try {
					Object obj = null;
					while (!me.isClosed()) {
						if ((obj = ois.readObject()) != null) {
							controller.handle(obj);
						}
					}
				}
				catch (IOException e) {
					e.printStackTrace();
				}
				catch (ClassNotFoundException e) {
					e.printStackTrace();
				}
			}
		}).start();
	}
	
	public void send(Object obj, String name) {
		
		
		try {
			oos.writeObject(name);
			oos.writeObject(obj);
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}

[edit] gesendet wird ein Vector<Integer> der die bytes der Datei speichert
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben