Sockets. Bekomm keine Antwort vom Server.

Status
Nicht offen für weitere Antworten.

Mondmann1

Mitglied
Hello.
Anbei dieser Code.
Ich sende eine Anfrage zum Server (unser eigenes Programm kommunikation funzt mit C und Sockets einwandfrei).

Ich sehe auch daß die Verbindung steht, bekomme aber keine Antwort vom Server.
Port und so weiter stimmt natürlich alles.
Wenn ich den HOSTNAME nach "ntp1.ptb.de" und den PORT nach 13 ändere bekomme ich die korrekte Zeit vom Internetserver zurück. Es funktioniert also Grundsätzlich.
Kann es sein, daß mein OutPutStream irgendwie falsch ist, so daß er Server es nicht versteht?
Dieses Programm und der Server laufen beide unter Windows XP.


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


public class Test
{
	private static final String HOSTNAME="localhost";
	private static final int PORT=3300;
	
	public Test()
	{	
		BufferedReader reader=null;
		Socket socket=null;
		String line;
		try
		{
			socket=new Socket(HOSTNAME,PORT);
			System.out.println("Connection etablished");
			
				
		
			PrintWriter send = new PrintWriter( socket.getOutputStream() );
			String test = "GIVETIME";	
	  		send.println(test);
	  		send.flush();
	  		
	  		
			socket.setSoTimeout(2500);//15sec
			reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
			
			while ((line=reader.readLine())!=null)
			{
				System.out.println(line);
			}
		}
		catch(IOException ex)
		{
		System.out.println("Error "+ex);
		}
			finally
			{
				try
				{
					if(reader!=null)
					reader.close();
					if(socket!=null)
					socket.close();
					
				}
				catch(IOException ex)
				{}
				
			}
		
	}

	public static void main (String args[])
	{
		new Test();
		
	}


}

Also wie gesagt, die Connection besteht, die Anfrage wird gesendet, aber ich bekomme keine Antwort...
Kann jemand einen Fehler entdecken?

Danke schonmal Mondmann
 
Ui das ging ja schnell🙂
Der Server sendet ein '\0' am Schluß.-> Windows Programm.
Es sendet es sicher ab (vorausgesetzt er empfängt es korrekt..(?)), da es ein Windows Programm ist, flush() gibts da nicht🙂

Mondmann
 
Hi,

das readLine liest solange, bis ein Zeilenumbruch kommt. Wenn deine Nachrichten mit '\0' abgeschlossen werden, kannst du nicht readLine nehmen. Versuche es mit read(char cbuf[], int off, int len).

Gruß
Mag1c
 
Nicht den Thread, nur den Post.
Ich hatte eine Antwort geschrieben, die ich aber lieben in nen neuen Thread packen wollte.
Dan konnte ich den angefangenen Post nicht mehr löschen, sondern musste irgendwas schreiben..🙂

Mondmann
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben