Läuft ein Client-Server-Programm in Java geschrieben auf NetBeans

Ich versuche, führen Sie eine client-server-Programm in java unter Netbeans.

Hier ist der code für den server:

//File Name GreetingServer.java

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

public class GreetingServer extends Thread
{
   private ServerSocket serverSocket;

   public GreetingServer(int port) throws IOException
   {
      serverSocket = new ServerSocket(port);
      serverSocket.setSoTimeout(10000);
   }

   public void run()
   {
      while(true)
      {
         try
         {
            System.out.println("Waiting for client on port " +
            serverSocket.getLocalPort() + "...");
            Socket server = serverSocket.accept();
            System.out.println("Just connected to "
                  + server.getRemoteSocketAddress());
            DataInputStream in =
                  new DataInputStream(server.getInputStream());
            System.out.println(in.readUTF());
            DataOutputStream out =
                 new DataOutputStream(server.getOutputStream());
            out.writeUTF("Thank you for connecting to "
              + server.getLocalSocketAddress() + "\nGoodbye!");
            server.close();
         }catch(SocketTimeoutException s)
         {
            System.out.println("Socket timed out!");
            break;
         }catch(IOException e)
         {
            e.printStackTrace();
            break;
         }
      }
   }
   public static void main(String [] args)
   {
      int port = Integer.parseInt(args[0]); #line 48, error arises here. 
      try
      {
         Thread t = new GreetingServer(port);
         t.start();
      }catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}

Hier ist der code für den client:

//File Name GreetingClient.java

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

public class GreetingClient
{
   public static void main(String [] args)
   {
      String serverName = args[0]; #line 10, error arises here 
      int port = Integer.parseInt(args[1]);
      try
      {
         System.out.println("Connecting to " + serverName
                             + " on port " + port);
         Socket client = new Socket(serverName, port);
         System.out.println("Just connected to "
                      + client.getRemoteSocketAddress());
         OutputStream outToServer = client.getOutputStream();
         DataOutputStream out =
                       new DataOutputStream(outToServer);

         out.writeUTF("Hello from "
                      + client.getLocalSocketAddress());
         InputStream inFromServer = client.getInputStream();
         DataInputStream in =
                        new DataInputStream(inFromServer);
         System.out.println("Server says " + in.readUTF());
         client.close();
      }catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}

So, wenn ich will, um zu simulieren, der client und der server laufen zusammen, ich habe zuerst auf dem server ausgeführt werden.
Sobald der server läuft, brauche ich auf dem client ausgeführt werden.

Jedoch, wenn ich versuche den server zu starten-Datei, bekomme ich folgende Fehlermeldung:

ausführen:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
bei GreetingServer.main(GreetingServer.java:48)
Java Result: 1
ERSTELLEN ERFOLGREICH (Gesamtzeit: 0 Sekunden)

Ähnlich, wenn ich versuche, führen Sie das client-Programm, bekomme ich die folgende Fehlermeldung:

ausführen:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
bei GreetingClient.main(GreetingClient.java:10)
Java Result: 1
ERSTELLEN ERFOLGREICH (Gesamtzeit: 0 Sekunden)

Warum ist das passiert? Bitte helfen Sie.

UPDATE:

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

public class GreetingServer extends Thread
{
    private static int port;
   private ServerSocket serverSocket;

   public GreetingServer(int port) throws IOException
   {
      serverSocket = new ServerSocket(port);
      serverSocket.setSoTimeout(10000);
   }

   public void run()
   {
      while(true)
      {
         try
         {
            System.out.println("Waiting for client on port " +
            serverSocket.getLocalPort() + "...");
            Socket server = serverSocket.accept();
            System.out.println("Just connected to "
                  + server.getRemoteSocketAddress());
            DataInputStream in =
                  new DataInputStream(server.getInputStream());
            System.out.println(in.readUTF());
            DataOutputStream out =
                 new DataOutputStream(server.getOutputStream());
            out.writeUTF("Thank you for connecting to "
              + server.getLocalSocketAddress() + "\nGoodbye!");
            server.close();
         }catch(SocketTimeoutException s)
         {
            System.out.println("Socket timed out!");
            break;
         }catch(IOException e)
         {
            e.printStackTrace();
            break;
         }
      }
   }
   public static void main(String [] args)
   {
      port=9000;
      try
      {
         Thread t = new GreetingServer(port);
         t.start();
      }catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}


//File Name GreetingClient.java

import java.io.*;
import java.net.*;
public class GreetingClient
{
    private static String serverName;
   public static void main(String [] args)
   {
      String sName = "MyServerName";
      int port = 9000;
      try
      {
         System.out.println("Connecting to " + sName
                             + " on port " + port);
         Socket client = new Socket(sName, port);
         System.out.println("Just connected to "
                      + client.getRemoteSocketAddress());
         OutputStream outToServer = client.getOutputStream();
         DataOutputStream out =
                       new DataOutputStream(outToServer);

         out.writeUTF("Hello from "
                      + client.getLocalSocketAddress());
         InputStream inFromServer = client.getInputStream();
         DataInputStream in =
                        new DataInputStream(inFromServer);
         System.out.println("Server says " + in.readUTF());
         client.close();
      }catch(IOException e)
      {
      }
   }
}

Ist es kein Fehler auf der server-Seite jetzt. Aber ich bin noch immer der folgende Fehler auf der client-Seite:

ausführen:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
bei GreetingClient.main(GreetingClient.java:10)
Java Result: 1
ERSTELLEN ERFOLGREICH (Gesamtzeit: 0 Sekunden)

wenn die nb läuft Ihr Programm, werden Sie die übergabe der Argumente an?
Wie betreibst du den server?
Nein, ich bin nicht. wenn ich soll, dann wo und wie gebe ich Sie?
durch einen rechts-Klick auf die .java-Datei und wählen Ausführen
bitte haben Sie einen Blick auf das update

InformationsquelleAutor Anon | 2013-04-24

Schreibe einen Kommentar