1.客户端源代码
package cn.itcast07_TCP_Thread_UpFile;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
/*
* TCP客户端, 上传文件
*
* 1.创建客户端的Socket对象(指定服务器端的IP地址与端口号)
* 2.获取客户端的输出流OutputStream对象
* 3.使用输出流对象,把指定文件中的数据,写到输出流中
*
* 4.当数据上传完毕后,告诉服务器端,上传数据完毕
*
* 5.获取服务器端返回的数据
* 6.关闭Socket流
*/
public class TCPClient {
public static void main(String[] args) throws IOException {
//1.创建客户端的Socket对象(指定服务器端的IP地址与端口号)
Socket socket = new Socket("192.168.68.107", 9999);
//2.获取客户端的输出流OutputStream对象
//OutputStream out = socket.getOutputStream();
BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
//3.使用输出流对象,把指定文件中的数据,写到输出流中
//数据源 -- D:\\YesDir\\test.JPG
BufferedInputStream in = new BufferedInputStream(new FileInputStream("D:\\YesDir\\test.JPG"));
//目的地 -- Socket的输出流 -- out
//读
byte[] buffer = new byte[1024];
int len = -1;
while ((len = in.read(buffer)) != -1) {
//写
out.write(buffer, 0, len); //len的意思是读了多少,就写多少。
}
//关闭操作文件的流
in.close();
//4.当数据上传完毕后,告诉服务器端,上传数据完毕
socket.shutdownOutput();
//5.获取服务器端返回的数据
//InputStream is = socket.getInputStream();
//InputStreamReader isr = new InputStreamReader( is );
//BufferedReader br = new BufferedReader( isr );
BufferedReader br = new BufferedReader( new InputStreamReader( socket.getInputStream() ) );
//读取反馈数据
String result = br.readLine();
System.out.println("反馈数据:" + result);
//6.关闭Socket流
socket.close();
}
} |
|