只要一用循环语句发数据,就会抛异常;Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
server:port java.net.*;
import java.io.*;
import java.util.*;
public class server2{
public static void main(String[]args) throws Exception{
ServerSocket a=new ServerSocket(7777);
int x=0;
while(true){
Socket b=a.accept();
InputStream in= b.getInputStream();
byte[]y=new byte[8];
      while(in.read(y)>0){
        String str=new String(y);
System.out.println(str);
}}
}
}client:import java.net.*;
import java.io.*;
public class client2{
public static void main(String[]args) throws Exception{
Socket a=new Socket("192.168.1.103",7777);
OutputStream b=a.getOutputStream();
byte[] x={'a','b','c'};
for(int i=0;i<=x.length;i++){
b.write(x[i]);}
}
}

解决方案 »

  1.   

    ArrayIndexOutOfBoundsException 数组越标异常,问问题前先自己,百度Google,小白不可怕,怕的是自己不去尝试解决,不探索!
      

  2.   

    另目测: 
    for(int i=0;i<=x.length;i++){
    b.write(x[i]);
    }
    //改为
    for(int i=0; i < (x.length-1); i++){
    b.write(x[i]);
    }
      

  3.   


    //不对=.=//这里二选一
    for(int i=0; i <=(x.length-1); i++){
    b.write(x[i]);
    }
    for(int i=0; i < x.length; i++){
    b.write(x[i]);
    }
      

  4.   

    ArrayIndexOutOfBoundsException是java非常常见的异常,产生原因是角标越界
    你的代码出现<=lengnth,这是错误的,length是数组长度,长度肯定是从1开始的,角标却是0开始
    比如{a,b,c,d},length=4,角标是0,1,2,3。所以角标的范围是0到length-1
    你只能定义到<length或者定义<=length-1