Address already in use: JVM_Bind?

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hey leute

hab mir ein klitzekleines prog geschrieben, welches von einem client eine zahl zunem server schickt und dieser die zahl wieder zum client zurückschickt. (sollte irgendwann mal ein kleines test-chatprogramm werden =))

nun hab ich allerdings den im titel genannten fehler, wenn ich den server-teil das zweite mal starten will, weil da dann der port anscheinend schon besetzt ist und nicht mehr freigegeben wurde.

dann dachte ich mir, dass es wohhl daran liegen muss, dass ich beim ServerSocket wieder ein close() machen muss, was allerdings auch keine abhilfe schuf. womöglich hab ich das close() aber auch am falschen ort platziert.

hier der code:
Code:
package chat;

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

public class ServSocket {
	
	ServerSocket srvSocket = null;
	
	public ServSocket(int port) throws IOException{
		srvSocket = new ServerSocket(port);
	}
	public void service() throws IOException{
		Socket sock = null;
		
		while(true){	
			sock = new Socket();
			try
			{
				sock = srvSocket.accept();
				handleConnection (sock);
			}
			catch ( IOException e ) {
				e.printStackTrace();
			}
			finally{
				if(sock!= null){
					try{
						sock.close();
					}
					catch(IOException ioe){
						System.out.println("Konnte Verbindung nicht schliessen: " + ioe.getMessage());
					}
				}
			}
			
		}
	}
	
	private void handleConnection(Socket client) throws IOException
	{
		InputStream  in  = client.getInputStream();
		OutputStream out = client.getOutputStream();
		int received = in.read();
		out.write(received);
	}
	
	public static void main(String args[]) {
		
		try{
			ServSocket test = new ServSocket(15000);
			test.service();
			System.out.println("Vor try-Block");
			try{
				test.srvSocket.close();
				System.out.println("srvSocket noch besetzt? " + test.srvSocket.isBound());
			}
			catch(IOException ioe){
				System.out.println("Konnte Server-Socket nicht schliessen: " + ioe.getMessage());
			}
		}
		catch(IOException ioe){
			System.out.println("IOException: " + ioe.getMessage());
		}
		
		
		
	}
	
}

kann mir jemand helfen? bin fast sicher, dass es nur ne kleinigkeit ist aber ich seh den wald vor lauter bäumen nicht mehr, glaub ich =)

thanks
rox
 

uNiKoMpLeX

Mitglied
Mach mal nachdem du in.read(); und out.write(); aufgerufen hast, die beiden Streams wieder zu, vl gehts dann dassa den socket zumacht
 
G

Guest

Gast
Code:
...
         sock = new Socket(); // <== ersetze es durch sock = null;
         try 
         { 
            sock = srvSocket.accept();
...
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben