"Empfangmethode" umschreiben, dass sie wartet.

Kai008

Erfahrenes Mitglied
Bisher habe ich, um mit Sockets zu empfangen folgende Methode verwendet:

Java:
package core;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Socket;

public class Read
{
	public Read(){}
	public static String run(Socket socket, int bufferlenght)
	{
		BufferedReader in = null;
		char[] buffer = null;
		int charCount = 0;
		
		try
		{
			in = new BufferedReader(
					new InputStreamReader(
							socket.getInputStream()));
		
			buffer = new char[bufferlenght];
			charCount = in.read(buffer, 0, bufferlenght);
		}
		catch(Exception e)
		{
			return(null);
		}
		
		String nachricht = new String(buffer, 0, charCount);
		return(nachricht);
	}
}

eigendlich auch wunderbar, nur würde ich jetzt gerne serialisiert senden, um auch ArrayLists übertragen zu können. Wäre an manchen Orten wesendlich einfacher. (So muss ich eine Schleife schreiben, die unnötig herumsendet.)
Hab mir das da zusammengepfuscht:

Java:
package core;

import java.io.ObjectInputStream;
import java.net.Socket;

public class Deserialize extends Object
{
	public Deserialize()
	{
		super();
	}
	public static Object run(Socket socket)
	{
		Object o = null;
		ObjectInputStream ois = null;
		
		try
		{
			ois = new ObjectInputStream(
					socket.getInputStream());
			
			while(o == null)
			{
				o = ois.readObject();
				Thread.sleep(200);
			}
		}
		catch(Exception e)
		{
			return(null);
		}
		return(o);
	}
}

Nur wartet die erste Methode immer, bis etwas empfangen wird, die 2. rennt wenn derweilen nichts gekommen ist einfach so weiter. (Daher die While)
Kann mir wer eventuell sagen, wie ich die 2. (wenn möglich) dazu bringen könnte zu warten, wäre mir Millionenfach lieber.
 

Neue Beiträge

Zurück