【发布时间】:2013-07-25 02:22:50
【问题描述】:
当我运行客户端时,它返回(错误):线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException 在 java.lang.System.arraycopy(本机方法) 在 java.io.BufferedOutputStream.write(未知来源) 在 Sockets.FileSocketClient.main(FileSocketClient.java:14)
我知道它发生在哪里[bos.write(mybytearray, 0, bytesRead);],我只是不明白为什么
服务器
import java.io.*;
import java.net.*;
public class FileSocketServer {
public static void main(String args[]) throws IOException {
ServerSocket serverSocket = new ServerSocket(1235);
File myFile = new File("test.txt");
while(true) {
Socket socket = serverSocket.accept(); //Understand
byte[] mybytearray = new byte[(int)myFile.length()]; //Don't understand
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(myFile)); //Don't understand
bis.read(mybytearray, 0, mybytearray.length); //Don't understand
OutputStream os = socket.getOutputStream(); //Don't understand
os.write(mybytearray, 0, mybytearray.length); //Don't understand
os.flush(); //Don't understand
socket.close(); //Don't understand
}
}
}
客户
package Sockets;
import java.io.*;
import java.net.*;
public class FileSocketClient {
public static void main(String args[]) throws IOException{
Socket socket = new Socket("GANNON-PC", 1235); //Understand
byte[] mybytearray = new byte[1024]; //Don't understand
InputStream is = socket.getInputStream(); //Don't understand
FileOutputStream fos = new FileOutputStream("mods//test.txt"); //Don't understand
BufferedOutputStream bos = new BufferedOutputStream(fos); //Don't understand
int bytesRead = is.read(mybytearray, 0, mybytearray.length); //Don't understand
bos.write(mybytearray, 0, bytesRead); //Don't understand
bos.close(); //
socket.close();
}
}
【问题讨论】:
-
我想你可以通过评论你所理解的来节省时间。在任何情况下,此代码都要求您了解 Java 中的流是如何工作的,以及从开发人员的角度(套接字、连接等等)大致了解 TCP 是如何工作的。否则无法解释这段代码的作用。
-
SO 是 NOT 你说我不明白以下任何内容的网站,请解释...
-
错误与
bos.write(mybytearray, 0, bytesRead);有关 -
@Jack 我大致了解 TCP 的工作原理(至少在我看来),我知道如何在两个连接之间发送文本/字符串。