Socket Kann kein ServerSocket erstellen

4596

Mitglied
Ich wollte gerade ein Programm schreiben, dass über einen Server fungiert, kann aber diesen Server nicht erstellen.
Java:
import java.net.*;
public class Server {
private ServerSocket server=new ServerSocket(459);//459 ist die Portnummer
......
}

Beim Aufruf des Konstruktors wird die folgende Exception geworfen:
java.net.PlainSocketImpl:java.net.BindException
Ihre Nachricht lautet "-2".

Leider kann ich damit nix anfangen und google zusammen mit anderen Suchmaschinen hat mir nix gebracht,
und auch eine Suche in diesem Forum brachte mir nichts. Aber eins weiß ich definitiv, nämlich, dass es nicht am Port liegt, da die gleiche Exception auch bei allen anderen erdenklichen Ports auftrat.

Kann mir irgendwer helfen?

Liegt es möglicherweise an meinem Computer?
 
du kannst wenn du willst das folgende programm mal ausführen ... vllt klappt das ja...

server:
Java:
import java.io.*;
import java.net.*;
import java.util.ArrayList;
import java.util.Iterator;


public class SehrEinfacherChatServer 
{
	ArrayList clientAusgabeStröme;
	
	public class ClientHandler implements Runnable
	{
		BufferedReader reader;
		Socket sock;
		
		public ClientHandler(Socket clientSocket)
		{
			try
			{
				sock=clientSocket;
				InputStreamReader isReader=new InputStreamReader(sock.getInputStream());
				reader=new BufferedReader(isReader);
			}
			catch(IOException ex){}
		}
		
		public void run()
		{
			String nachricht;
			try
			{
				while((nachricht=reader.readLine()) != null)
				{
					System.out.println("gelesen: "+nachricht);
					esAllenWeitersagen(nachricht);
				}
			}
			catch(IOException ex){}
		}
		
	}
	
		public static void main (String[] args)
		{
			new SehrEinfacherChatServer().los();
		}
		
		
		public void los()
		{
			clientAusgabeStröme=new ArrayList();
			
			try
			{
				ServerSocket serverSock=new ServerSocket(5005);
				
				while(true)
				{
					Socket clientSocket=serverSock.accept();
					PrintWriter writer=new PrintWriter(clientSocket.getOutputStream());
					clientAusgabeStröme.add(writer);
					Thread t=new Thread(new ClientHandler(clientSocket));
					t.start();
					System.out.println("habe eine Verbindung");
				}
			}
			catch(Exception ex){}
		}
		
		public void esAllenWeitersagen(String nachricht)
		{
			Iterator it=clientAusgabeStröme.iterator();
			while(it.hasNext())
			{
				try
				{
					PrintWriter writer=(PrintWriter) it.next();
					writer.println(nachricht);
					writer.flush();
				}
				catch(Exception ex){}
			}
		}
}

client:

Java:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.net.*;


public class EinfacherChatClient
{
	JTextArea eingehend;
	JTextField ausgehend;
	BufferedReader reader;
	PrintWriter writer;
	Socket sock;
	
	public static void main(String[]args)
	{
		EinfacherChatClient client=new EinfacherChatClient();
		client.los();
	}
	
	public void los()
	{
		JFrame frame=new JFrame("Einfacher Chat");
		JPanel hauptPanel=new JPanel();
		eingehend=new JTextArea(15,20);
		eingehend.setLineWrap(true);
		eingehend.setWrapStyleWord(true);
		eingehend.setEditable(false);
		JScrollPane fScroller=new JScrollPane(eingehend);
		fScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		fScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		ausgehend=new JTextField(20);
		JButton sendenButton=new JButton("Senden");
		sendenButton.addActionListener(new SendenButtonListener());
		hauptPanel.add(fScroller);
		hauptPanel.add(ausgehend);
		hauptPanel.add(sendenButton);
		netzwerkEinrichten();
		
		Thread readerThread=new Thread(new EingehendReader());
		readerThread.start();
		
		frame.getContentPane().add(BorderLayout.CENTER, hauptPanel);
		frame.setSize(400,500);
		frame.setVisible(true);
	}
	
	private void netzwerkEinrichten()
	{
		try
		{
			sock=new Socket("localhost",5005);
			InputStreamReader streamReader=new InputStreamReader(sock.getInputStream());
			reader=new BufferedReader(streamReader);
			writer=new PrintWriter(sock.getOutputStream());
			JOptionPane.showMessageDialog(null, "Verbindung hergestellt");
		}
		catch(IOException ex)
		{
			JOptionPane.showMessageDialog(null, "Verbindung konnte nicht hergestellt werden");
		}
	}
	
	public class SendenButtonListener implements ActionListener
	{
		public void actionPerformed(ActionEvent evt)
		{
			try
			{
				writer.println(ausgehend.getText());
				writer.flush();
			}
			catch(Exception ex)
			{
				JOptionPane.showMessageDialog(null, "Mitteilung konnte nicht gesendet werden");
			}
			
			ausgehend.setText("");
			ausgehend.requestFocus();
		}
	}
	
	public class EingehendReader implements Runnable
	{
		public void run()
		{
			String nachricht;
			try
			{
				while((nachricht=reader.readLine())!=null)
				{
					System.out.println("gelesen: "+nachricht);
					eingehend.append(nachricht+"\n");
				}
			}
			catch(IOException ex)
			{}
		}
	}
}
 
Danke für den Code, obwohl ich nur den Server gebraucht hätte.
Ich muss zugeben, es lag am Port(hab nur die mit 3 Stellen getestet ;(
Das Thema wär erledigt.
 

Neue Themen


Zurück
Oben