关于网络编程的问题
我跟着教程写了一个简单的文件上传程序,文件上传成功了,可是客户端就是读取不到服务器的回写数据,求大佬帮看看是什么问题。代码如下:
客户端代码:
package com.java.gy.day20.upload;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class TCPClient {
public static void main(String[] args) throws UnknownHostException, IOException {
// TODO 自动生成的方法存根
//1.创建本地字节输入流FileInputStream对象
FileInputStream fis = new FileInputStream("D:\\Resources\\123\\1.jpg");
//2.创建客户端Socket对象
Socket socket = new Socket("127.0.0.1",8888);
//3.使用Socket对象的getOutputStream方法,创建网络输出流OutputStream对象
OutputStream os = socket.getOutputStream();
//4.使用本地字节输入流FileInputStream对象的read方法,读取本地文件
//5.使用网络输出流OutputStream对象的write方法,向服务器发送数据
int len = 0;
byte[] bytes = new byte[1024];
while((len = fis.read(bytes)) != -1) {
os.write(bytes, 0, len);
}
//6.使用Socket对象的getInputStream方法,创建网络输入流InputStream对象
System.out.println("测试1");
InputStream is = socket.getInputStream();
//7.使用网络输入流InputStream对象的read方法,读取服务器的回写数据
while((len = is.read(bytes))!=-1) {
System.out.println(new String(bytes,0,len));
}
System.out.println("测试3");
//8.释放资源
fis.close();
socket.close();
}
服务器端代码:
package com.java.gy.day20.upload;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String[] args) throws IOException {
// TODO 自动生成的方法存根
//1.创建服务器端ServerSocket对象,并绑定指定的端口号
ServerSocket server = new ServerSocket(8888);
//2.使用ServerSocket对象的accept方法,获取请求的Socket对象
Socket socket = server.accept();
//3.创建FileOutputStream对象,并指定文件在服务器上存储的位置
FileOutputStream fos = new FileOutputStream("D:\\Resources\\新建文件夹\\1.jpg");
//4.使用Socket对象的getInputStream方法,获取网络输入流InputStream对象
InputStream is = socket.getInputStream();
//5.使用网络输入流InputStream对象的read方法,读取客户端传送的数据
//6.使用FileOutputStream对象的write方法,将文件写入服务器的指定位置
int len = 0;
byte[] bytes = new byte[1024];
while((len=is.read(bytes))!=-1) {
//System.out.println(len);
fos.write(bytes, 0, len);
}
System.out.println("测试2");
//7.使用Socket对象的getOutputStream方法,获取网络输出流OutputStream对象
OutputStream os = socket.getOutputStream();
//8.使用网络输出流OutputStream对象的write方法向客户端回写数据"上传成功"
os.write("上传成功".getBytes());
//9.释放资源
fos.close();
socket.close();
server.close();
}
}