客户端
package PicCopy;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
/*
* 客户端
* 1、服务端点
* 2、读取客户端已有的图片数据
* 3、通过Socket输出流将数据发给服务端
* 4、读取服务端的反馈信息
* 5、关闭
* */
public class SendPic {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Socket s = new Socket(InetAddress.getLocalHost(),39);
OutputStream out = null;
out = s.getOutputStream();
BufferedInputStream bfis =
new BufferedInputStream(new FileInputStream("完成复制的图片.jpg"));
int len = 0;
while((len = bfis.read())!=-1) {
out.write(len);
}
s.shutdownOutput();
//获取服务端发来的消息
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = br.readLine();
System.out.println(str);
s.close();
out.close();
br.close();
}
}
服务端
package PicCopy;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
//多线程实现客户端的并发上传
class ServerPic implements Runnable{
private Socket s;
ServerPic(Socket s){
this.s = s;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
InputStream br = s.getInputStream();
BufferedOutputStream pw = new BufferedOutputStream(new FileOutputStream("上传成功"+ System.currentTimeMillis() +".jpg"));
//一个字节一个字节的写
int len = 0;
while((len = br.read())!= -1) {
pw.write(len);
}
//反馈信息的写入
PrintWriter pwout = new PrintWriter(s.getOutputStream(),true);
pwout.println("上传成功");
s.close();
br.close();
pwout.close();
}catch(IOException e) {
throw new RuntimeException("上传失败");
}
}
}
public class ServerReceive {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ServerSocket ss = new ServerSocket(39);
while(true) {
new Thread(new ServerPic(ss.accept())).start();
}
}
}