Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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 ) {;}
    }
}

First i RUN Server, but when i try to RUN Client, the error which i am getting is:

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

May be i have to use different consoles to run both the Server and the Client? If so, then please tell me the way. i am using Java Eclipse 1.6 SE.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
142 views
Welcome To Ask or Share your Answers For Others

1 Answer

clientSocket = new Socket(args[0], 4442);

Your program needs a command line argument:

java your.Program <ip>


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...