最近新学习了Java语言,算是一个小白,想用TCP Socket进行网络编程,使得服务器端接受客户端的文件,但是遇到了一个错误,有人知道该怎么解决吗?
//这是服务器端的代码
public class UploadServer {
public static void main(String[] args) {
System.out.println("服务器端运行...");
try {
//创建一个ServerSocket监听8080端口的客户端请求
ServerSocket serverSocket = new ServerSocket(8080);
//使用accept()阻塞当前线程,等待客户端请求
Socket socket = serverSocket.accept();
//由Socket获得输入流,并创建缓冲输入流
BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
//由文件输出流创建缓冲输出流
FileOutputStream out = new FileOutputStream("G:\\站点\\新建文本文档.txt");
//创建一个缓冲区
byte[] buffer = new byte[1024];
//首次向Socket读取数据
int len = in.read(buffer);
while (len != -1) {
//写入数据到文件
out.write(buffer, 0, len);
//再次从Socket读取数据
len = in.read(buffer);
}
System.out.println("接收完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
//这是客户端的代码
public class UploadClient {
public static void main(String[] args) {
System.out.println("客户端运行...");
try {
//向非本机的8080客户端发出请求
Socket socket = new Socket("192.168.0.106",8080);
//由Socket获得输出流,并创建缓冲输出流
BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
//创建文件输入流
FileInputStream fin = new FileInputStream("F:\\站点\\新建文本文档.txt");
//由文件输入流创建缓冲输出流
BufferedInputStream in = new BufferedInputStream(fin);
//准备一个缓冲区
byte[] buffer = new byte[1024];
//首次读取文件
int len = in.read(buffer);
while(len != -1) {
//数据写入Socket
out.write(buffer,0,len);
//再次读取文件
len = in.read(buffer);
}
System.out.println("上传成功!");
} catch(ConnectException e) {
System.out.println("服务器未启动!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
先运行服务器端,在运行客户端
客户端显示:
服务器端显示:
服务器端的第27行是 int len = in.read(buffer);
该如何处理这个异常呢,求解!!!