import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
//客户端
public class Client {
public static void main(String[] args) throws Exception, IOException {
System.out.println("================客户端==============");
Socket socket = new Socket(InetAddress.getLocalHost(), 8888);
//获取读取文件的输入流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\q.txt"));
//输出信息到服务端的输出流
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
byte [] b = new byte[1024];
int len = 0;
//边读边写
while((len=bis.read(b))!=-1){
bos.write(b, 0, len);
bos.flush();
}
//在不关闭socket的条件下关闭输出流
socket.shutdownOutput();
//获取服务端反馈消息的输入流
DataInputStream dis = new DataInputStream(socket.getInputStream());
String mess = dis.readUTF();
System.out.println(mess);
}
}
服务端
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws Exception {
System.out.println("================服务端==============");
ServerSocket ss = new ServerSocket(8888);
Socket socket = ss.accept();
//读取客户端发送的数据
BufferedInputStream buf = new BufferedInputStream(socket.getInputStream());
//将客户端发送的数据读取到本地
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\a.txt"));
byte[] b = new byte[1024];
int len = 0;
//边读边写
while ((len = buf.read(b)) != -1) {
bos.write(b,0,len);
bos.flush();
}
System.out.println("写出完毕");
//发送消息到客户端
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF("上传成功");
dos.flush();
dos.close();
bos.close();
buf.close();
}
}