Netzwerk Chatprogramm Quellcode funktioniert nicht

  • Themenstarter Themenstarter Utos
  • Beginndatum Beginndatum
U

Utos

Gast
Guten Abend,

Für die Schule muss ich ein Java Projekt machen, ich habe mich für eine Server Applikation entschieden.
Mit ihr kann man Nachrichten an EINEN anderen Rechner im Netzwerk verschicken und empfangen.
Da ich mich mit dem Lernen von Java und programmieren des Programms zeitlich etwas übernommen habe, stehe ich jetzt etwas blöd da.

Also im Moment pfeile ich noch am Server, auf den die Clienten zugreifen.

Die Fehler stehen in Rot neben der Zeile.
Ich programmiere mit Eclipse und verwende dazu noch folgendes Tutorial:

http://www.cn-java.com/download/data/book/socket_chat.pdf

Fehler stehen in Rot neben den Zeilen

Java:
//Server ist für Clienten // Clienten greifen auf Server zu 

import java.io.*;
import java.net.*;
import java.util.*;

public class class_Server 
{
	
	private ServerSocket ss;
	
	private Hashtable outputStreams = new Hashtable(); 
		
	
		public void Server( int port ) throws IOException 
		{
		
			listen( port );
		}
		
		private void listen( int port ) throws IOException 
		{
			ss = new ServerSocket( port );
			System.out.println( "Listening on "+ss );
			while (true) 
				{
				Socket s = ss.accept();
				System.out.println( "Connection from "+s );
				DataOutputStream dout = new DataOutputStream( s.getOutputStream() );
				outputStreams.put( s, dout );
				new ServerThread( this, s   ) ;                                                               [COLOR="Red"]TheconstructorServerThread(class_Server,Socket) is undefined[/COLOR]
			
				}

		}
		Enumeration getOutputStreams() 
		{
			return outputStreams.elements();
			
			
		}
		
		void sendToAll( String message ) 
		{
			synchronized( outputStreams ) 
			{
				for (Enumeration e = getOutputStreams(); e.hasMoreElements(); ) 
				{
					DataOutputStream dout = (DataOutputStream)e.nextElement();
					try {
						dout.writeUTF( message );
				} catch( IOException ie ) { System.out.println( ie ); 
			}
		}
	}
}
		

void removeConnection( Socket s ) 
{
	synchronized( outputStreams ) 
	{
		System.out.println( "Removing connection to "+s );
		outputStreams.remove( s );
		try {
			s.close();
			} catch( IOException ie ) 
				{
					System.out.println( "Error closing "+s );
					ie.printStackTrace();
				}
	}
}
	


static public void main( String args[] ) throws Exception 
{
	
	int port = Integer.parseInt( args[0] );
	
	new Server( port );   [COLOR="Red"]Server cannot be resolved to a type[/COLOR]
}
}

Das ist quasi der erste Teil und dann kommt eine neue Class

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

public class ServerThread extends Thread
{
	private Server server;  [COLOR="Red"]Server cannot be resolved to a type[/COLOR]
	private Socket socket;
	public ServerThread( [COLOR="Red"]Server[/COLOR] server, Socket Server)
	{
		this.[COLOR="Red"]server[/COLOR]= server;
		this.socket= socket;
		start();
	}
			public void run()
			{
				try
				{
					DataInputStream din = new DataInputStream( socket.getInputStream() );
					while (true) 
					{
						String message= din.readUTF();
						System.out.println("Sending"+message);
						[COLOR="Red"]server[/COLOR].sendToAll(message);
					}
			
				}
				catch (EOFException ie)
					{
					//keine Fehlerausgabe hier
					}
				catch(IOException ie)
					
					{ ie.printStackTrace();
					}
				finally
					{[COLOR="Red"]server[/COLOR].removeConnection( socket );
					}
				
				
					
			}
					
				
}

Ich seh gerade, dass das mit der roten Schrift nicht funktioniert, also beim Compilieren

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Server cannot be resolved to a type

at class_Server.main(class_Server.java:82)

Der Fehler mit dem Server zieht sich dann durchs ganze Programm.
Kann mir einer verraten, wie ich dem nen Type zuweise?

Danke schon mal im Vorraus. Mal sehen, ob sich einer erbarmt und sich durch den Qu(a)ellcode quält 😉
 
Zuletzt bearbeitet von einem Moderator:
Achsu :lol:

Oh, ist einfach nen bisschen spät 😀
Aber sonst werd ich nicht fertig.

Ok guck ich mir noch mal an, ich hab bei Eclipse jetzt alles automatisch verbessern lassen, das war glaub ich nicht so schlau :bahnhof:
Na ja, ich meld mich später noch mal
 
Muss ich den Thread mit start (); starten?

Und dann hab ich noch ein Problem:
private Hashtable outputStreams = new Hashtable();
"- Hashtable is a raw type. References to generic type Hashtable<K,V> should be parameterized"

muss ich dann hinter Hashtable<String, String> oder so etwas schreiben?
 
Wenn du weißt dass du sowohl als Key wie auch als Value immer Strings hast dann solltest du das machen ja.
 

Zurück
Oben