需求说明:做一个“文件上传案例”
要求:将项目中的一个图片,通过客户端上传至服务器
操作步骤:
1,创建服务器,等待客户端连接
2,创建客户端Socket,连接服务器
3,获取Socket流中的输出流,功能:用来把数据写到服务器
4,创建字节输入流,功能:用来读取数据源(图片)的字节
5,把图片数据写到Socket的输出流中(把数据传给服务器)
6,客户端发送数据完毕,结束Socket输出流的写入操作,告知服务器端
7,获取Socket的输入流
8,创建目的地的字节输出流
9,把Socket输入流中的数据,写入目的地的字节输出流中
10,获取Socket的输出流, 作用:写反馈信息给客户端
11,写反馈信息给客户端
12,获取Socket的输入流 作用: 读反馈信息
13,读反馈信息
代码:
先创建服务器:
---------------------
[mw_shl_code=java,true]public class TCPServer3 {
public static void main(String[] args) throws IOException {
//1创建服务器对象
ServerSocket server = new ServerSocket(9898);
//2等待客户端连接 如果有客户端连接 获取到客户端对象
Socket s = server.accept();
//3当前在服务器中 读取数据
InputStream in = s.getInputStream();
//4当前在服务器中 将数据写到流中
FileOutputStream fos = new FileOutputStream("BBQ\\123.png");
byte[] bytes = new byte[1024];
int len = 0;
while ((len = in.read(bytes)) != -1) {
fos.write(bytes, 0, len);
}
//5写完数据提示上传成功
s.getOutputStream().write("上传成功".getBytes());
//6释放资源
fos.close();
s.close();
server.close();
}
}
服务器创建完毕后 创建客户端:
[mw_shl_code=java,true]public class TCPClient3 {
public static void main(String[] args) throws IOException {
//1创建服务器对象
Socket s = new Socket("127.0.0.1", 9898);
//2指定路径
FileInputStream fis = new FileInputStream("D:\\123.png");
//3读取服务器数据
OutputStream out = s.getOutputStream();
byte[] bytes = new byte[1024];
int len = 0;
while ((len = fis.read(bytes)) != -1) {
out.write(bytes, 0, len);
}
//4告知书写完毕
s.shutdownOutput();
//5书写到服务器
InputStream in = s.getInputStream();
len = in.read(bytes);
System.out.println("服务器:" + new String(bytes, 0, len));
//6释放资源
fis.close();
s.close();
}
}
---------------------
|
|