DaytimeClient

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
ich bin neu bei Netzwerkprogrammierung.
um zu verstehen, wie server/client funktionieren habe ich ein programm gefunden, das nur datum von localhost zurückgibt(so weit ich verstanden habe)
Meine frage ist nun warum dieses Class nicht ganz richtig funktionert ?

Code:
public class DaytimeClient {
   private static final String HOSTNAME = "localhost";
   private static final int Port = 80;
   
   public DaytimeClient(){
	   BufferedReader Reader = null;
	   Socket socket = null;
	   String line = null;
	   try{
		   socket = new Socket(HOSTNAME, Port);
		   System.out.println("connection established");
		   socket.setSoTimeout(15000);
		   
		   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 DaytimeClient();
   }
}

Conntection klapt's aber gibt es kein Datum zurück...

die Ausgabe von Konsole ist :

connection established
Error: java.net.SocketTimeoutException: Read timed out

danke für die Antworten...


:applaus:
 
S

SlaterB

Gast
hmm, fehlt da nicht noch der Server dazu?
wenn die Connection established wird scheint ja einer dazu sein
(bei mir: Error: java.net.ConnectException: Connection refused: connect),
macht der auch was?
 

madboy

Top Contributor
Daytime findet sich normalerweise auf Port 13. Du connectest allerdings zu Port 80. Da läuft im Normalfall HTTP (Webserver) drüber.
Gib mal bei HOSTNAME "www.google.com" oder "http://www.google.com" oder sowas an. Dann solltest was zurück bekommen. Das wird dann kein Datum sein, sondern die google.com Seite :wink:
 
G

Guest

Gast
mit dem port 13 habe ich probiert. Dies geht auch nicht...
ich wollte mit meinem localhost ausprobieren (mit google kalpt's auch nicht).
:idea:
 
G

Guest

Gast
SlaterB hat gesagt.:
hmm, fehlt da nicht noch der Server dazu?
wenn die Connection established wird scheint ja einer dazu sein
(bei mir: Error: java.net.ConnectException: Connection refused: connect),
macht der auch was?

dies kommt vor, wenn irgendwie anderes port eingebe als 80(localhost)...
 
S

stev.glasow

Gast
zu google klappt das nicht weil der google server auf nen request wartet und du ihm nix sendest - das gleiche wird bei localhost:80 sein.
läuft bei dir überhaupt nen daytime server? wenn nein, ist die aktion für die katz. wenn ja, auf welchem port? wenn der auf port 80 läuft zeig mal den code wenn nicht nimm mal den richtigen port.
 
G

Guest

Gast
Code:
public class DaytimeServer {
   private static final int Port = 13;
   public DaytimeServer()  {
	   try
	   {
		  ServerSocket server= new ServerSocket(Port);
		  while (true)
		  {
			Socket client = server.accept();
			PrintWriter pr = new PrintWriter(client.getOutputStream());
			Date date = new Date();
			pr.println("date:" + date);
			pr.println("goodbye");
			pr.flush();
			pr.close();
			client.close();
		  }  
	   }
	   catch(BindException bi) 
	   {
		   
	   }
	   catch(IOException bi) 
	   {
		   
	   }
   }
   public static void main(String args[])
   {
	   new DaytimeServer();
   }
}
Code:
public class DaytimeClient {
   private static final String HOSTNAME = "localhost";
   private static final int Port = 13;
   
   public DaytimeClient(){
	   BufferedReader Reader = null;
	   Socket socket = null;
	   String line = null;
	   try{
		   socket = new Socket(HOSTNAME, Port);
		   System.out.println("connection established");
		   socket.setSoTimeout(15000);
		   
		   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 DaytimeClient();
   }
}
 
S

stev.glasow

Gast
der code ist soweit richtig und läuft auch:
Hab folgende Ausgabe bekommen:
connection established
date:Mon Jul 02 04:03:13 CEST 2007
goodbye

Kann dir jetzt nur den professionellen tipp geben den server auch zu starten - sonst weiß ich auch nicht.
 
G

Guest

Gast
das muss ich nochmal probieren kann sein dass ich diese fehler gemacht habe...
aber danke für die Antworten... :roll:
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben