只要一用循环语句发数据,就会抛异常;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]);}
}
}
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]);}
}
}
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]);
}
//不对=.=//这里二选一
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]);
}
你的代码出现<=lengnth,这是错误的,length是数组长度,长度肯定是从1开始的,角标却是0开始
比如{a,b,c,d},length=4,角标是0,1,2,3。所以角标的范围是0到length-1
你只能定义到<length或者定义<=length-1