# Interne Computer Kommunikation



## Impoleon1111 (22. Dez 2013)

Hallo ich habe das Problem das sich zwei Computer bei mir zuhause sich über interne IP's mit Sockets nicht verbinden ich habe Folgenden Quelltext:
Client.java:

```
package mainpackage;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class Client {
	static String text;
	public static void newConection(String IP,int Port) {
	String hostName = (IP);
	int port = (Port);
	Socket c = null;
	try {
		hostName = "0.0.0.0";
		port = 25565;
		c = new Socket (hostName,port);
		
		BufferedReader vomServer = new BufferedReader(new InputStreamReader(c.getInputStream()));
		PrintWriter zumServer = new PrintWriter(c.getOutputStream(),true);
		
		BufferedReader vonTastatur = new BufferedReader(new InputStreamReader(System.in));
		
		text = (vomServer.readLine());
		MainFrame.newText(text);
		c.close();
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static void newConectionT(String IP,int Port,String textE) {
		String hostName = (IP);
		int port = (Port);
		Socket c = null;
		String not;
		try {
			hostName = "0.0.0.0";
			port = 25565;
			c = new Socket (hostName,port);
			
			BufferedReader vomServer = new BufferedReader(new InputStreamReader(c.getInputStream()));
			PrintWriter zumServer = new PrintWriter(c.getOutputStream(),true);
			
			BufferedReader vonTastatur = new BufferedReader(new InputStreamReader(System.in));
			
			not = (vomServer.readLine());
			zumServer.println(textE);
			text = vomServer.readLine();
			MainFrame.newText(text);
			c.close();
			}catch (Exception e) {
				e.printStackTrace();
			}
		}
}
```
MainFrame.java:

```
package mainpackage;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JProgressBar;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingConstants;

public class MainFrame extends JFrame {

	private JPanel contentPane;
	static  JTextField textField;
	private JTextField textField_1;
	static JButton btnLoad;
	static JButton btnNewButton;
	static JTextArea textArea;
	static JButton btnNewButton_1;
	static String c = (">STP Server: ");

	public MainFrame() {
		KnopfListener kl = new KnopfListener();
		setTitle("S.G. Server Browser (STP)");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JProgressBar progressBar = new JProgressBar();
		progressBar.setOrientation(SwingConstants.VERTICAL);
		progressBar.setBounds(416, 39, 28, 234);
		contentPane.add(progressBar);
		
		textField = new JTextField();
		textField.setBounds(65, 6, 233, 28);
		contentPane.add(textField);
		textField.setColumns(10);
		
		btnLoad = new JButton("Load");
		btnLoad.setBounds(310, 7, 100, 29);
		btnLoad.addActionListener(kl);
		contentPane.add(btnLoad);
		
		JScrollPane scrollPane_1 = new JScrollPane();
		scrollPane_1.setBounds(5, 46, 405, 195);
		contentPane.add(scrollPane_1);
		
		textArea = new JTextArea("");
		textArea.setEditable(false);
		scrollPane_1.setViewportView(textArea);
		
		textField_1 = new JTextField();
		textField_1.setBounds(127, 245, 199, 28);
		contentPane.add(textField_1);
		textField_1.setColumns(10);
		
		JTextArea txtrAdress = new JTextArea();
		txtrAdress.setEditable(false);
		txtrAdress.setText("Adress:");
		txtrAdress.setBounds(5, 12, 55, 16);
		contentPane.add(txtrAdress);
		
		JTextArea txtrMessageToServer = new JTextArea();
		txtrMessageToServer.setEditable(false);
		txtrMessageToServer.setText("Message to Server:");
		txtrMessageToServer.setBounds(5, 251, 117, 19);
		contentPane.add(txtrMessageToServer);
		
		btnNewButton = new JButton("Send");
		btnNewButton.setBounds(322, 246, 82, 29);
		btnNewButton.addActionListener(kl);
		contentPane.add(btnNewButton);
		
		btnNewButton_1 = new JButton("Info");
		btnNewButton_1.setBounds(405, 3, 39, 36);
		btnNewButton_1.addActionListener(kl);
		contentPane.add(btnNewButton_1);
		
	}
	class KnopfListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			String IP;
			if(e.getSource() == btnLoad) {
				IP = (textField.getText());
				String[] sr = IP.split(":");
				int Port = Integer.parseInt(sr[1]);
				Client.newConection(sr[0], Port);
				//System.out.println();
			}else if(e.getSource() == btnNewButton) {
				String textee = textField_1.getText();
				IP = (textField.getText());
				String[] sr = IP.split(":");
				int Port = Integer.parseInt(sr[1]);
				Client.newConectionT(IP, Port, textee);;
			}else if(e.getSource() == btnNewButton_1) {
				Info.SA();
			}
		}
	}
	public static void newText(String text) {
		String text1 = "";

		String save = (c +"" + textArea.getText());
		text1 = text;
		textArea.setText(save + "\n"+ text1);
		c = "";
	}
	public static void main(String[] args) {
		MainFrame frame = new MainFrame();
		frame.setVisible(true);
	}
}
```
Server.java:

```
package server;

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

public class Server {
	static String ex;
	public static void main(String [] args) {
		try {
			int port = 25565;
			ServerSocket server = (new ServerSocket(port));
			ServerInterface.text(">Server running");
			ServerInterface.text(">" + server);
			while (true) {
				Socket s = server.accept();
				new ChatDienst(s).start();
			}
			
			}catch (ArrayIndexOutOfBoundsException ae){
				ae.printStackTrace();
		}	catch (IOException e) {
			e.printStackTrace();
		}
	}
}
```
ChatDienst.java:

```
package server;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ChatDienst extends Thread {
	String text = "";
	BufferedReader vomClient;
	PrintWriter zumClient;
	Socket s;
	public ChatDienst(Socket s) {
		try {
			this.s = s;
			vomClient = new BufferedReader(new InputStreamReader(s.getInputStream()));
			zumClient = new PrintWriter(s.getOutputStream(),true);
		}catch(IOException e) {
			e.printStackTrace();
			System.out.println(">Fehler bei Client");
			}
		}
	public void start() {
		String text;
		try {
			System.out.println(">Neuer Client! ("+s+")");
			zumClient.println(">Hallo du bist Verbunden! Dies ist der erste STP Server der Welt!");
			text = (vomClient.readLine());
			if(text.equalsIgnoreCase("News")) {
				text = ">Thanks for using STP.";
			}else{
				text = ">Error invalied Command!";
			}
			zumClient.println(text);
			
		}catch(Exception e) {
			//e.printStackTrace();
		}
	}
}
```
Bitte einfach eine Lösung in Codeform schreiben danke.:toll:


----------



## rme (22. Dez 2013)

Wenn ich es richtig sehe, verbindet sich dein Client mit der IP-Adresse 0.0.0.0? Das geht nicht, so eine Adresse kann man höchstens am Server zum Horchen verwenden, damit auf allen verfügbaren IP-Adressen gehorcht wird. Der Client musst eine erreichbare IP-Adresse des Servers verwenden.


----------



## Impoleon1111 (1. Jan 2014)

So ich hab die Zeilen rausgelöst und versucht mich mit einem Computer zu verbinden funktioniert aber nicht :noe: .


----------



## turtle (1. Jan 2014)

Gib mal auf dem Server-Rechner in einer Kommandozeile ein

```
ipconfig /all
```
Und bei den vielen Ausgaben steht auch die IP-Adresse, bei mir beispielsweise

```
IPv4-Adresse  . . . . . . . . . . : 192.168.178.21
```
Und vom Client Rechner versuchst du dich mit der IP-Adresse zu verbinden (auf Port 25565).


----------



## Sen-Mithrarin (2. Jan 2014)

192.168.178.21 ... hallo FritzBox ... xD

@TO
GEHT NICHT ist KEINE fehlerbeschreibung
du hast ja in deinem code ein Throwable.printStackTrace() stehen, wie wäre es diese ausgabe einfach mal zu posten ?


btw : was das mit dem 0.0.0.0 im code soll versteh ich auch nicht wirklich, und sollte das so im code stehen wäre die fehlerursache klar


und zum port : 25565 ... vielleicht mal vorher MC-server abschalten ?


----------



## Impoleon1111 (26. Jan 2014)

Erstens ja der MC Server ist aus der er läuft auf Nitrado...

Zweitens Fehler Meldung:

```
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2
	at mainpackage.MainFrame$KnopfListener.actionPerformed(MainFrame.java:97)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6414)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
	at java.awt.Component.processEvent(Component.java:6179)
	at java.awt.Container.processEvent(Container.java:2084)
	at java.awt.Component.dispatchEventImpl(Component.java:4776)
	at java.awt.Container.dispatchEventImpl(Container.java:2142)
	at java.awt.Component.dispatchEvent(Component.java:4604)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4279)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4209)
	at java.awt.Container.dispatchEventImpl(Container.java:2128)
	at java.awt.Window.dispatchEventImpl(Window.java:2492)
	at java.awt.Component.dispatchEvent(Component.java:4604)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)
	at java.awt.EventQueue.access$400(EventQueue.java:82)
	at java.awt.EventQueue$2.run(EventQueue.java:676)
	at java.awt.EventQueue$2.run(EventQueue.java:674)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:690)
	at java.awt.EventQueue$3.run(EventQueue.java:688)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
```


----------



## Sen-Mithrarin (26. Jan 2014)

tja, deine fehlermeldung passt leider nicht zu dem von dir gepostetem code

laut exception versuchst du auf den array-index 2 zuzugreifen, laut deinem code steht aber ne "0" > fehler so leider nicht nachvollziehbar

bitte darauf achten das die fehlermeldung zum code passt .. sonst wird es rätzel-raten
wenn du also was verändert hast solltest du den code der den fehler erzeugt noch mal posten


----------

