Bigbutcher
Erfahrenes Mitglied
Moin Moin,
ich hab folgende Probleme
a) bin ich ein Java Anfänger
b) muss ich ein Client Server Programm schreiben, dass nur kommuniziert, spricht nur ein "Hallo Server, ich bin bei dir" bzw "Hallo Client, du bist auf mir drauf" ausgibt.
Soweit die Theorie.
Grundlage für mein Programm soll ein Beispielcode sein, dass ich im Buch "Java als erste Programmiersprache" von Joachim Goll gefunden habe.
Das TCPServer Programm läuft ganz gut, glaub ich zumindest, jedoch kommt beim TCPClient immer:
"Rechnername unbekannt:
client"
Die richtige Ausgabe müsste lauten:
"Verbunden mit Rechner: xxx Port: xxxx
name empfangen: Hallo Server"
bzw
"Verbunden mit Rechner: xxx"
Kann mir jemand bitte helfen und mir ein paar Ratschläge/Korrekturvorschläge mitteilen?
Hier der Code: TCPClient.java
----------------------------------------------------------------------------------------------------------------
package tcpclient;
import java.net.*;
import java.io.*;
public class TCPClient {
static String hostname = "client";
static int port = 10001;
public static void main (String[] args)
{
try
{
Socket socket = new Socket (hostname, port);
socket.getOutputStream().write("Hallo Server".getBytes());
socket.close();
}
catch (UnknownHostException e)
{
System.out.println("Rechnername unbekannt:\n" +e.getMessage());
}
catch (IOException e)
{
System.out.println("Fehler während der Kommunikation:\n" +e.getMessage());
}
}
}
TCPServer.java
----------------------------------------------------------------------------------------------------------------
package tcpserver;
import java.net.*;
import java.io.*;
public class TCPServer {
static int port = 10001;
public static void main (String[] args)
{
try {
ServerSocket socket = new ServerSocket (port);
Socket client = socket.accept ();
System.out.println("Verbunden mit: " +client.getInetAddress() .getHostName() +" Port: " +client.getPort());
byte[] b = new byte[128];
InputStream stream = client.getInputStream();
int size = 0;
while (size == 0)
{
size = stream.available();
}
stream.read(b);
String message = new String (b, 0, size);
System.out.println("Nachricht empfangen: " +message);
client.close();
socket.close();
}
catch (UnknownHostException e)
{
System.out.println("Rechnername unbekannt:\n" +e.getMessage());
}
catch (IOException e)
{
System.out.println("Fehler während der Kommunikation:\n" +e.getMessage());
}
}
}
edit:
----------------------------------------------------------------------------------------------------------------
Das habe ich ja noch vergessen, da ist bei mir noch eine Verständnisfrage hinzugekommen. Wie verbindet sich der Client hier mit dem Programm?
Man gibt ja nirgends eine IP Adresse ein.
ich hab folgende Probleme
a) bin ich ein Java Anfänger
b) muss ich ein Client Server Programm schreiben, dass nur kommuniziert, spricht nur ein "Hallo Server, ich bin bei dir" bzw "Hallo Client, du bist auf mir drauf" ausgibt.
Soweit die Theorie.
Grundlage für mein Programm soll ein Beispielcode sein, dass ich im Buch "Java als erste Programmiersprache" von Joachim Goll gefunden habe.
Das TCPServer Programm läuft ganz gut, glaub ich zumindest, jedoch kommt beim TCPClient immer:
"Rechnername unbekannt:
client"
Die richtige Ausgabe müsste lauten:
"Verbunden mit Rechner: xxx Port: xxxx
name empfangen: Hallo Server"
bzw
"Verbunden mit Rechner: xxx"
Kann mir jemand bitte helfen und mir ein paar Ratschläge/Korrekturvorschläge mitteilen?
Hier der Code: TCPClient.java
----------------------------------------------------------------------------------------------------------------
package tcpclient;
import java.net.*;
import java.io.*;
public class TCPClient {
static String hostname = "client";
static int port = 10001;
public static void main (String[] args)
{
try
{
Socket socket = new Socket (hostname, port);
socket.getOutputStream().write("Hallo Server".getBytes());
socket.close();
}
catch (UnknownHostException e)
{
System.out.println("Rechnername unbekannt:\n" +e.getMessage());
}
catch (IOException e)
{
System.out.println("Fehler während der Kommunikation:\n" +e.getMessage());
}
}
}
TCPServer.java
----------------------------------------------------------------------------------------------------------------
package tcpserver;
import java.net.*;
import java.io.*;
public class TCPServer {
static int port = 10001;
public static void main (String[] args)
{
try {
ServerSocket socket = new ServerSocket (port);
Socket client = socket.accept ();
System.out.println("Verbunden mit: " +client.getInetAddress() .getHostName() +" Port: " +client.getPort());
byte[] b = new byte[128];
InputStream stream = client.getInputStream();
int size = 0;
while (size == 0)
{
size = stream.available();
}
stream.read(b);
String message = new String (b, 0, size);
System.out.println("Nachricht empfangen: " +message);
client.close();
socket.close();
}
catch (UnknownHostException e)
{
System.out.println("Rechnername unbekannt:\n" +e.getMessage());
}
catch (IOException e)
{
System.out.println("Fehler während der Kommunikation:\n" +e.getMessage());
}
}
}
edit:
----------------------------------------------------------------------------------------------------------------
Das habe ich ja noch vergessen, da ist bei mir noch eine Verständnisfrage hinzugekommen. Wie verbindet sich der Client hier mit dem Programm?
Man gibt ja nirgends eine IP Adresse ein.
Zuletzt bearbeitet: