客户代码:
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();
}
}
服务器:
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();
}
}
连接处理程序:
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 ) {;}
}
}
首先是我的RUN服务器,但是当我尝试运行客户端时,我得到的错误是:
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0 在SimpleClient.main(SimpleClient.java:11)
可能我必须使用不同的控制台来运行服务器和客户端吗?如果是的话,那么请告诉我。我正在使用Java Eclipse 1.6 SE。
答案 0 :(得分:1)
clientSocket = new Socket(args[0], 4442);
您的程序需要命令行参数:
java your.Program <ip>