Socket, args

bizkit

Mitglied
Hallo,
ich habe ein folgendes Problem und ich kann es leider nicht lösen.

Ich habe ein Programm dass mir meine eigenen Daten von meinem Rechner ausgeben soll.
Nur leider funktioniert es auch nicht. Auch ähnliche Programme mit Sockets (Server und Clients) haben die gleiche Fehlermeldung. Meine Vermutung ist, dass es an ,,args" liegen könnte.
Nur leider kenne ich mich damit überhaupt nicht aus.

1.Fehler: Ich wollte mal das ,,args" auslesen mit: for(int i = 0; i <= args.length; i++){
String arg = args;


Dabei bekomme ich die Fehlermeldung:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at start.main(start.java:7)


2.Fehler (Hauptproblem): Das ist eingentlich kein richtiger Fehler, aber das Programm endet nach dem erste Block. Es sollte mir aber die Daten ausgeben




Könnte mir einer helfen den Fehler zu beheben.
Hier ist der Quellcode:

Java:
import java.net.*;
 
public class Clientsocket1
{
  public static void main(String args[])
  {
    // Prüft, ob die Parametrisierung des Aufrufs korrekt
  if (args.length != 1) {
      System.err.println("Ziel: " + args[0]); 
    System.err.println("Argument-Länge " + args.length + " Usage: java clientsocket1 <host>");
    System.exit(1);
  }
  try {
    //Holt den ersten Parameter (d.h. den Namen des Hosts mit dem eine Verbindung
    // aufgenommen werden soll aus dem Programmaufruf
    // getByName ist eine Static methode, die ein Objekt der Klasse InetAddress zurückliefert 
    InetAddress addr = InetAddress.getByName(args[0]);
    System.out.println(addr);    
    // Jetzt werden Hostname und Hostadresse ausgegeben
    System.out.println(addr.getHostName());
    System.out.println(addr.getHostAddress());
    
    System.out.println("lokaler host: " + addr.getLocalHost());   // Lokaler Hostname 
  } catch (UnknownHostException e) 
  {
    // wird ausgeworfen wenn der Host nicht identifizierbar ist
    System.err.println(e.getMessage());
    System.exit(1);
  }
  }
}
 

diggaa1984

Top Contributor
ohne jetzt noch weiter den Code zu lesen:
Code:
for(int i = 0; i <= args.length; i++)
Kann nicht klappen, da muss
Code:
for(int i = 0; i < args.length; i++)
hin :)

ok noch weiter gelesen
Java:
if (args.length != 1) {
    System.err.println("Ziel: " + args[0]); 
    System.err.println("Argument-Länge " + args.length + " Usage: java clientsocket1 <host>");
    System.exit(1);
}

Das kann auch nicht klappen, denn wenn
Code:
args.length == 0
ist, dann geht er da rein, und versucht aber auch ein Argument auszulesen
Code:
args[0]
, was nicht existiert. Daher dein Fehler mit der AIOOBE
 
Zuletzt bearbeitet:

bizkit

Mitglied
damit die Fehlermeldung nicht kommt. Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Clientsocket1.main(Clientsocket1.java:9)


Das Programm sollte mir meinen hostName und hostAddress ausgeben.
 

diggaa1984

Top Contributor
ist der Aufruf dann:
Code:
java Clientsocket1 <name> <adresse>
??

Java:
if (args.length != 2) {
    //Fehlermeldungen
} else {
     System.err.println("Name: " + args[0]); 
     System.err.println("Adresse: " + args[1]); 
}
 

bizkit

Mitglied
was genau meinst du jetzt?

Ich habe das Programm mit deinem Code ergänzt, aber es kommt immer noch die selbe Fehlermeldung


So sollt eigentlich die Ausgabe sein, aber mit meinen Werten:
QBBD9

Kostenlos Bilder hochladen | img4web.com
 
Zuletzt bearbeitet:

bizkit

Mitglied
Java:
import java.net.*;
 
public class Clientsocket1
{
  public static void main(String args[])
  {
    // Prüft, ob die Parametrisierung des Aufrufs korrekt
	  if (args.length != 2) {		    //Fehlermeldungen
		} else {
		     System.err.println("Name: " + args[0]); 
		     System.err.println("Adresse: " + args[1]); 
	}	
	
  try {
    //Holt den ersten Parameter (d.h. den Namen des Hosts mit dem eine Verbindung
    // aufgenommen werden soll aus dem Programmaufruf
    // getByName ist eine Static methode, die ein Objekt der Klasse InetAddress zurückliefert 
    InetAddress addr = InetAddress.getByName(args[0]);
    System.out.println(addr);    
    // Jetzt werden Hostname und Hostadresse ausgegeben
    System.out.println(addr.getHostName());
    System.out.println(addr.getHostAddress());
    
    System.out.println("lokaler host: " + addr.getLocalHost());   // Lokaler Hostname 
  } catch (UnknownHostException e) 
  {
    // wird ausgeworfen wenn der Host nicht identifizierbar ist
    System.err.println(e.getMessage());
    System.exit(1);
  }
  }
}
 

diggaa1984

Top Contributor
Java:
import java.net.*;

public class Clientsocket1 {
    
    public static void main(String args[]) {
        // Prüft, ob die Parametrisierung des Aufrufs korrekt
        if (args.length != 1) {
            System.out.println("FEHLER");
            System.exit(0);
        } else {
            try {
                //Holt den ersten Parameter (d.h. den Namen des Hosts mit dem eine Verbindung
                // aufgenommen werden soll aus dem Programmaufruf
                // getByName ist eine Static methode, die ein Objekt der Klasse InetAddress zurückliefert 
                InetAddress addr = InetAddress.getByName(args[0]);
                System.out.println(addr);    
                // Jetzt werden Hostname und Hostadresse ausgegeben
                System.out.println(addr.getHostName());
                System.out.println(addr.getHostAddress());
    
                System.out.println("lokaler host: " + addr.getLocalHost());   // Lokaler Hostname 
            } catch (UnknownHostException e) {
                // wird ausgeworfen wenn der Host nicht identifizierbar ist
                System.err.println(e.getMessage());
                System.exit(1);
            }     
        }
    }
}

machst es so, oben hätte bei //Fehlermeldung der System.exit(0) Befehl hingemusst, den du ja schon ganz zu Beginn drin hattest. So klappt es nun
 

bizkit

Mitglied
Ok, die Fehlermeldung ist jetzt weg,

aber wie komme ich in den 2 Block, also das der mir mein HostName und Address ausgibt?


Ich habe jetzt das Programm selber verändert indem ich ein neues Array-String erstellt habe.
dann läuft das Programm auch richtig.

Aber wieso klappt es nicht mit args???



hier ist meine aktueller code:
Java:
import java.net.*;


public class Clientsocket1 {
    
    public static void main(String args[]) {
        // Prüft, ob die Parametrisierung des Aufrufs korrekt
      
    [B]String ip [] = new String [1];[/B]
    	
    	
    	if (ip.length != 1) {
            System.out.println("FEHLER");
            System.exit(0);
        } else {
           
        	
        	try {
                //Holt den ersten Parameter (d.h. den Namen des Hosts mit dem eine Verbindung
                // aufgenommen werden soll aus dem Programmaufruf
                // getByName ist eine Static methode, die ein Objekt der Klasse InetAddress zurückliefert 
                InetAddress addr = InetAddress.getByName(ip[0]);
                System.out.println(addr);    
                // Jetzt werden Hostname und Hostadresse ausgegeben
                System.out.println(addr.getHostName());
                System.out.println(addr.getHostAddress());
    
                System.out.println("lokaler host: " + addr.getLocalHost());   // Lokaler Hostname 
            } catch (UnknownHostException e) {
                // wird ausgeworfen wenn der Host nicht identifizierbar ist
                System.err.println(e.getMessage());
                System.exit(1);
            }     
        }
    }
}
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
er gibt doch nun alles aus!? Zumindest macht er das bei mir.

Code:
java Clientsocket1 www.gmx.de
www.gmx.de/213.165.64.74
www.gmx.de
213.165.64.74
lokaler host: ....
 
Zuletzt bearbeitet:

bizkit

Mitglied
ne bei mir hat es mit ,,args" nicht ausgegeben (nur halt den Fehler)
aber als ich ein anderes array erstellt habe (siehe Beitrag oben)
dann hat es geklappt.

Aber warum klappt es nicht mit args?

Du hast mir schon weitergeholt(DANKE), aber ich würde gerne trotzdem gerne wissen wieso es nicht mit args läuft
 

diggaa1984

Top Contributor
mit oder ohne Parameter bei Programmstart? Sprich wie übergibst du den Hostnamen oder die Adresse beim Testen? Das kannst in den Run Configurations angeben als Argument .. dann klappts auch mit args :)
 

bizkit

Mitglied
was für parameter muss ich dem übergeben???

ich kenne das mit den parameter von classen oder methoden die ich in dem programmcode übergebe, aber so im eclipse weiss ich nicht, was ich für parameter überegen sollte.
 
L

logicone

Gast
ohne jetzt noch weiter den Code zu lesen:
Code:
for(int i = 0; i <= args.length; i++)
Kann nicht klappen, da muss
Code:
for(int i = 0; i < args.length; i++)
hin :)

ok noch weiter gelesen
Java:
if (args.length != 1) {
    System.err.println("Ziel: " + args[0]); 
    System.err.println("Argument-Länge " + args.length + " Usage: java clientsocket1 <host>");
    System.exit(1);
}

Das kann auch nicht klappen, denn wenn
Code:
args.length == 0
ist, dann geht er da rein, und versucht aber auch ein Argument auszulesen
Code:
args[0]
, was nicht existiert. Daher dein Fehler mit der AIOOBE

aber selbstversuch haste gemacht oder ?
wenn args.length==0 dann ist args.length!=1 doch erfüllt ...

mit dem for hast du aber rechte
 

diggaa1984

Top Contributor
Habe ich nicht, stimmt .. du aber auch nicht, denn wenn
Code:
args.length == 0
ist existiert auch kein args[0] und er bekommt eine ArrayIndexOutOfBounds für Index 0 :bae:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
izoards Socket Kommunikation Java Basics - Anfänger-Themen 16
Nina Pohl Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist Java Basics - Anfänger-Themen 6
G Socket Verbindung aufbauen Java Basics - Anfänger-Themen 11
S Bilder über Socket Senden Java Basics - Anfänger-Themen 1
S Asynchrone Socket-Abfragen Java Basics - Anfänger-Themen 5
Meeresgott OOP Socket Verbindung richtig Kapseln Java Basics - Anfänger-Themen 0
O Socket by reference übergeben Java Basics - Anfänger-Themen 0
J Socket schließen - Ist eine SocketException unumgänglich? Java Basics - Anfänger-Themen 4
D Socket ---> Server Socket worauf muss ich achten? Java Basics - Anfänger-Themen 2
N Socket-Programmierung Java Basics - Anfänger-Themen 4
M wait/notify bei Socket Java Basics - Anfänger-Themen 4
B Input/Output Socket I/O - outputStream.write(-1) Java Basics - Anfänger-Themen 2
B Socket OutputStream Java Basics - Anfänger-Themen 17
B Socket Kommunikation in beide Richtungen Java Basics - Anfänger-Themen 12
L Socket in JTextArea Java Basics - Anfänger-Themen 9
T Input/Output Zwei InputStreams von einem Socket Java Basics - Anfänger-Themen 2
B Socket Problem Java Basics - Anfänger-Themen 3
T socket.close aber verbindung besteht noch Java Basics - Anfänger-Themen 4
F Buffered Image über Socket versenden Java Basics - Anfänger-Themen 6
E Socket InputStream "terminiert" nicht Java Basics - Anfänger-Themen 4
B Threads Interrupt während Socket.read()? Java Basics - Anfänger-Themen 3
M Versand von Nachrichten via Socket (Delay) Java Basics - Anfänger-Themen 21
F socket-problem Java Basics - Anfänger-Themen 6
E Input/Output Socket bekommt keine Verbindung bei funktionierendem Fremdziel Java Basics - Anfänger-Themen 2
E Socket (Client) dauerhaft aktiv? Java Basics - Anfänger-Themen 9
D Java - Socket - Datenübertragung Java Basics - Anfänger-Themen 18
E Input/Output einfachen Socket für XML-Anfragen bauen Java Basics - Anfänger-Themen 13
R Cannot find a free socket for the debugger Java Basics - Anfänger-Themen 6
F Socket Kommunikation Java Basics - Anfänger-Themen 4
M "Connection reset" gbxRemote Socket Java Basics - Anfänger-Themen 9
N Files mit Byte an Socket versenden Java Basics - Anfänger-Themen 2
L FTP per Socket Java Basics - Anfänger-Themen 2
M Audio Stream läuft auf :connection abort: socket write error Java Basics - Anfänger-Themen 2
J Socket - BufferedReader lese Problem Java Basics - Anfänger-Themen 2
M Socket Server Java Basics - Anfänger-Themen 9
N Socket Problem? Java Basics - Anfänger-Themen 9
G Socket erstellen dauert sehr lange. Java Basics - Anfänger-Themen 4
H Java Socket Java Basics - Anfänger-Themen 14
A XML Daten über Socket Java Basics - Anfänger-Themen 3
I Allgemeine fragen zu Socket server Java Basics - Anfänger-Themen 6
C Socket Programmierung Java Java Basics - Anfänger-Themen 4
F Socket Instanz auf Klasse welche von Socket erbt zuweisen Java Basics - Anfänger-Themen 3
ven000m Wieso antwortet mein Server nicht mehr (Socket Anwendung) Java Basics - Anfänger-Themen 2
J Daten von einem (char*)Socket einlesen. Java Basics - Anfänger-Themen 3
S Java Socket Java Basics - Anfänger-Themen 3
K Frage zu SdtOut streams bzw. Socket Programmierung Java Basics - Anfänger-Themen 3
M HTTP-Anfragen und Socket Java Basics - Anfänger-Themen 2
A von Socket-Stream lesen Java Basics - Anfänger-Themen 4
M Ändern einer Socket-Eigenscheft aus einem modalen Dialog? Java Basics - Anfänger-Themen 6
E String zerlegen aus args Java Basics - Anfänger-Themen 1
N Wozu nutzt man in der Main Methode das args Array? Java Basics - Anfänger-Themen 10
melly_ Verständnisfrage zu args Java Basics - Anfänger-Themen 3
J Frage zu: public static void main (String[]args) Java Basics - Anfänger-Themen 1
V Use of String[] args Java Basics - Anfänger-Themen 13
B Kommandozeile Übergangsmechanismus args Java Basics - Anfänger-Themen 5
dave253 Was bedeutet (String args[])? Java Basics - Anfänger-Themen 6
S Java String[]args Übergabeparameter Java Basics - Anfänger-Themen 2
N Erste Schritte StdIn vs args[] und Arrays vs "Einzelinitialisierung" Java Basics - Anfänger-Themen 6
T Double.parseDouble(args[0]) Java Basics - Anfänger-Themen 13
T Bitte um Hilfe bei Aufgabe: Long zahl = Long.parseLong(args [0]); Java Basics - Anfänger-Themen 3
L Frage zu args[] im Programm Java Basics - Anfänger-Themen 10
B ja ja schon wieder einer mit einer public static void main(string[] args) Frage... Java Basics - Anfänger-Themen 8
P args ausgeben Java Basics - Anfänger-Themen 3
R string aller args[] ? Java Basics - Anfänger-Themen 8
B func(Object ....args) korrekt weitergeben Java Basics - Anfänger-Themen 4
HoloYoitsu args-Parameter durchschleifen (Schnittstelle erweitern?) Java Basics - Anfänger-Themen 27
B Erste Schritte Java IDE schreibt "(String[] args)" Java Basics - Anfänger-Themen 5
V Erste Schritte Bedeutung von args Java Basics - Anfänger-Themen 10
E Methoden public static void main(String[] args) Java Basics - Anfänger-Themen 9
G Parameter an main(String[] args) übergeben Java Basics - Anfänger-Themen 6
H main args OutOfBounceExeption Java Basics - Anfänger-Themen 4
C String[] args Java Basics - Anfänger-Themen 4
F String args[] Frage... Java Basics - Anfänger-Themen 5
K Input/Output switch case - Parameterübergabe args[0] Java Basics - Anfänger-Themen 34
S Main Methode String... args Java Basics - Anfänger-Themen 2
Developer_X String[]args nutzen, wie? Java Basics - Anfänger-Themen 7
B Programmstart und Parameter/args Java Basics - Anfänger-Themen 4
M args[] während des Programmlaufes eingeben Java Basics - Anfänger-Themen 5
Ö args zuweisen Java Basics - Anfänger-Themen 2
B args[0] auf Anzahl Zeichen überprüfen Java Basics - Anfänger-Themen 29
M Exception args[0] Java Basics - Anfänger-Themen 16
D Args in andere Klasse transferieren Java Basics - Anfänger-Themen 2
V Wofür steht das args / arguments in Main Methode Java Basics - Anfänger-Themen 4
bugmenot args parsen Java Basics - Anfänger-Themen 3
C public static void main(String[] args) Java Basics - Anfänger-Themen 6
T String[] args ausgeben Java Basics - Anfänger-Themen 10
L Zugriff auf args[0] in "Test1View" in Netbeans - J Java Basics - Anfänger-Themen 2
G Was ist public static void main(String[] args)? Java Basics - Anfänger-Themen 12
C args[] als statische Variablen speicher oder wie? Java Basics - Anfänger-Themen 12
S Effektive args[] Behandlung Java Basics - Anfänger-Themen 16
G args[] parameter übergeben. Java Basics - Anfänger-Themen 3
M Var-Args Java Basics - Anfänger-Themen 10
L feststellen ob args[2] gesetzt ist? Java Basics - Anfänger-Themen 2
M public static void main(String... args)<- Was bedeutet das? Java Basics - Anfänger-Themen 5
G args definieren in netbeans Java Basics - Anfänger-Themen 4
N public static void main(String args[]) Java Basics - Anfänger-Themen 6
D args und parameterübergabe Java Basics - Anfänger-Themen 8
G public static void main(final String[] args) Java Basics - Anfänger-Themen 4
X Was genau heißt "public static void main(String[] args) Java Basics - Anfänger-Themen 4
B public static void main (String[] args) ??? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben