Wie zum Ausführen des Server-Client-code mit Socket-Programmierung in Java Eclipse?

Client-code:

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

public class SimpleClient {

    public static void main(String[] args) throws IOException {

 Socket clientSocket = null;

 try {
     clientSocket = new Socket(args[0], 4442);
 } catch (UnknownHostException e) {
     System.err.println("Don't know about host: " + args[0] + ".");
     System.exit(1);
 } catch (IOException e) {
     System.err.println("Couldn't get I/O for " +
          "the connection to: " + args[0] + "");
     System.exit(1);
 }

 BufferedInputStream in;
 BufferedOutputStream out;

 try {
     in = new BufferedInputStream(clientSocket.getInputStream());
     out = new BufferedOutputStream(clientSocket.getOutputStream());
 } catch (IOException e) {
     System.out.println(e.toString());
     return;
 }

 byte[] m_txt = args[1].getBytes();

 out.write(m_txt, 0, m_txt.length);

 out.flush();

 byte[] m_rcv = new byte[m_txt.length];

 int n = in.read(m_rcv, 0, m_rcv.length);

 if (n != m_rcv.length) {
     System.out.println("Some data are lost ...");
 }

 System.out.println(new String(m_rcv));

 out.close();
 in.close();
 clientSocket.close();
    }
}

Server:

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

public class SimpleServer {

    public static void main(String[] args) throws IOException {

 boolean listening = true;
 ServerSocket serverSocket = null;
 try {
     serverSocket = new ServerSocket(4442);
 } catch (IOException e) {
     System.err.println("Could not listen on port: 4444.");
  System.exit(1);
 }

 while(listening) {
     Socket clientSocket = serverSocket.accept();
     (new SimpleConHandler(clientSocket)).start();
 }

 serverSocket.close();
    }
}

Connection-Handler:

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

public class SimpleConHandler extends Thread
{

    private Socket clientSocket;

    public SimpleConHandler(Socket clientSocket) {

 this.clientSocket = clientSocket;
    }

    public void run() {

 BufferedInputStream in;
 BufferedOutputStream out;

 try {

     in = new BufferedInputStream(clientSocket.getInputStream());
     out = new BufferedOutputStream(clientSocket.getOutputStream());

 } catch (IOException e) {
     System.out.println(e.toString());
     return;
 }

 try {
     byte[] msg = new byte[4096];
     int bytesRead = 0;
     int n;

     while((n = in.read(msg, bytesRead, 256)) != -1) {
  bytesRead += n;
  if (bytesRead == 4096) {
      break;
  }
  if (in.available() == 0) {
      break;
  }
     }

     for(int i=bytesRead; i>0; i--) {
  out.write(msg[i-1]);
     }

     out.flush();

 } catch(IOException e1) {
     System.out.println(e1.toString());
 }

 try {
     out.close();
     in.close();
     clientSocket.close();
 } catch ( IOException e2 ) {;}
    }
}

Zuerst habe ich AUSGEFÜHRT-Server, aber wenn ich versuche zu LAUFEN, Kunden, die Fehler, die ich erhalte ist:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
im SimpleClient.main(SimpleClient.java:11)

Kann sein, ich habe mit verschiedenen Konsolen zu laufen sowohl der Server und der Client? Wenn ja, dann bitte sagen Sie mir den Weg. ich bin mit Java Eclipse 1.6 SE.

  • Wenn Sie das nächste mal post Quellcode bitte formatieren Sie es. Macht es einfacher für Menschen zu Lesen.
InformationsquelleAutor Zaki | 2011-01-18
Schreibe einen Kommentar