# Ich checks nicht.



## Guest (11. Okt 2005)

So bin gerade dabei mich in die Netzwerkprogrammierung einzuarbeietn und habe hier mir 1.mal richtig viel copy&paste mäßig was aus dem FAQ-Netzwerkbereich gezogen um das dann nachher ein wenig zu ändern, rumzuspielen usw. um so eben etwas zu lernen.
Nur kann bei mir keine Verbindung aufgebaut werden....

Hier der Code:


```
import java.io.*;
import java.net.*;

public class NetzwerkTest
{
	private Socket connection;

	
	
	public NetzwerkTest()
	{
			System.out.println("Versuche Verbindung herzustellen...");
		try
		{
		connection = new Socket("localhost",1234);
		}
		catch(Exception any)
		{
			any.printStackTrace();
			System.out.println("Verbindung konnte nicht hergestellt werden...");
			return ;
		}
		
		
		System.out.println("Sende Daten....");
		try
		{
			BufferedWriter out = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
			out.write("Hello World");
			out.flush();
			out.close();
		}
		catch(Exception any)
		{
			System.out.println("Es konnten keine Daten gesendet werden...");
			return ;
		}
		System.out.println("Versuche Daten zu empfangen...");
		try
		{
			BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
			System.out.println("\n\n" + in.readLine() + "\n\n");
			in.close();
		}
		catch(Exception any)
		{
			System.out.println("Es konnten keine Daten gesendet werden...");
			return ;
		}
		
	}
	
	
	public static void main(String[] args)
	{
		NetzwerkTest test = new NetzwerkTest();
	
	}
	
}
```


Und hier die Exception :



Versuche Verbindung herzustellen...
java.net.ConnectException: Connection refused: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(Unknown Source)
	at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.SocksSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.<init>(Unknown Source)
	at java.net.Socket.<init>(Unknown Source)
	at NetzwerkTest.<init>(NetzwerkTest.java:15)
	at NetzwerkTest.main(NetzwerkTest.java:56)
Verbindung konnte nicht hergestellt werden...



naja ich hoffe ihr könnt mir helfen..[/code]


----------



## Icewind (11. Okt 2005)

es geht nicht weil auf dem port den du angibst: 1234 niemand lauscht...


----------



## Guest (11. Okt 2005)

sry, es hätte so auch gar nicht funktionieren können, da ich den Reader 1. nach dem senden deklariert habe.
Trotzdem kann keine Verbindung aufgebaut werden....
Hier nochmal der Code


```
import java.io.*;
import java.net.*;

public class NetzwerkTest
{
	private Socket connection;
	private BufferedWriter out;
	private BufferedReader in;	
	
	public NetzwerkTest()
	{
		
	
			System.out.println("Versuche Verbindung herzustellen...");
		try
		{
		connection = new Socket("localhost",1234);
		}
		catch(Exception any)
		{
			any.printStackTrace();
			System.out.println("Verbindung konnte nicht hergestellt werden...");
			return ;
		}
		
		try
		{
		 out = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
		 in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
		}
		catch(Exception any)
		{
			any.printStackTrace();
		}
		
		System.out.println("Sende Daten....");
		try
		{
			
			out.write("Hello World");
			out.flush();
			out.close();
		}
		catch(Exception any)
		{
			System.out.println("Es konnten keine Daten gesendet werden...");
			return ;
		}
		System.out.println("Versuche Daten zu empfangen...");
		try
		{
			
			System.out.println("\n\n" + in.readLine() + "\n\n");
			in.close();
		}
		catch(Exception any)
		{
			System.out.println("Es konnten keine Daten gesendet werden...");
			return ;
		}
		
	}
	
	
	public static void main(String[] args)
	{
		NetzwerkTest test = new NetzwerkTest();
	
	}
	
}
```


----------



## Bleiglanz (11. Okt 2005)

new Socket("localhost",1234); 

läuft bei dir am Rechner irgendein Server der auf Port 1234 lauscht??


----------



## Guest (11. Okt 2005)

Ne, aber ich dachte ich könnte mittels client einfach etwas dahinschicken und wider abholen...
Welche Portnummer hat denn der Echo-Dinest bei Windows?


----------



## Guest (11. Okt 2005)

Habe nachgeschaut, der liegt auf 7.
Ich bekomme aber dennoch die selbige Exception.
Irgendwie peil ich das nicht ganz.


----------



## Bleiglanz (11. Okt 2005)

läuft unter Windows normalerweise überhaupt ein ECHO?

schreib dir lieber selber einen Server (-> ServerSocket)


----------



## Icewind (11. Okt 2005)

so weit ich weis nicht...
aber einen eigenen server schreiben is ned schwer, bzw gibts zu einem echo server sicher ein beispiel im internet...


----------



## Guest (11. Okt 2005)

Habe gerade inen geschreiben...klappt jetzt auch wunderbar...
Danke Leute..
Die Microsoft Support-Seite meint das sie nen UDP und nen TCP/IP Echo wie bei den UNIX Rechnern auch auf Poert 7 liegen hätten.

Was ich nur nicht verstehe warum ich als Client  den OutputStream erst nach dem lesen des InputStreams zu machen darf sonst gibbet ne Exception.


----------



## Bert Brenner (11. Okt 2005)

Wenn man den Echoserver der bei Windows mitgeliefert wird benutzen möchte, dann muss dieser installiert sein und der Dienst auch gestartet werden, dann kann man auch den verwenden.


----------



## Nick H. (11. Okt 2005)

nimm doch statt Echo einfach Ping


----------



## Bleiglanz (11. Okt 2005)

Ping ist eine andere Baustelle!


----------



## Guest (16. Okt 2005)

Ok noch ne Frage....

Warum ist dies nicht möglich???

objout = new ObjectOutputStream(connect.getOutputStream());
objout.write(new String("blablubal"));

Das war jetzt ein Beispiel vom Client.
Funktioniert aber bei beiden nicht.
Der Server bekommt in diesem Fall zwar etwas, kann aber den String nicht casten,
So lasse ich im catch das Object ausgeben was mir eine -1 liefert.

Meine Frage ist ein Object-Input/Output-Stream in der Netzwerkprogrammierung nicht so leicht einbinden wie ich dies gemacht habe??? Muss der Stream vorher gebuffert sein...???
Ich habe kein Ahnung...


----------



## Guest (17. Okt 2005)

Wäre nett wenn hier einer noch einmal antworten würde.


----------



## Mag1c (17. Okt 2005)

Hi,

was genau hast du denn probiert ? Diese write(String)-Methode gibts bei mir nicht. Man kann (laut API) Strings mittels writeObject/readObject oder writeUTF/readUTF transportieren.

Gruß
Mag1c


----------



## Guest (17. Okt 2005)

oh sorry ich hatte mich verschrieben, ich meinte natürlich writeObject(Object obj)
Wie gesagt der Server liest auch etwas eben nur keinen String.
Ich prüfe mit Instanceof ob das Object nen String ist.
Wenn ja, dann soller Casten, wenn nicht, dann lasse ich mir das Object einfach so ausgeben.
Dann gibt er mir aber eine -1;


----------



## Mag1c (17. Okt 2005)

Hi,

na dann probiere doch mal writeUTF/readUTF oder einen anderen Datentyp.

Gruß
Mag1c


----------



## Guest (17. Okt 2005)

Die Frage ist ja auch ob ich die Streams buffern müsste oder nicht.


----------



## Bleiglanz (17. Okt 2005)

liest der Server von einem ObjectInputStream wirklich mit readObject?


----------



## Guest (17. Okt 2005)

Der Server nicht direkt, ich habe einen kleinen Chat geschrieben, der Client besitzt nen extra Thread welcher auf dem Server in einer Collection gespeichert wird.
In diesm Thread wird jedoch mit readObject() gelesen.
Ich versuche das mal gebuffert.
Liegt aber auf der Schule, also kann ich 1. morgen bescheid sagen.


----------

