服务器端的代码
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.UUID;
/**
* 服务器端的实现
* @author L.Eric
*
*/
public class UploadPicServer {
public static void main(String[] args) throws IOException {
RecivePic(7878,"png");
}
/**
* @Description: TODO
* @param port 绑定服务器端的端口
* @param ext 上传文件的扩展名
* @throws IOException
* @author L.Eric
* create: 2013-4-27
*/
public static void RecivePic(int port, String ext) throws IOException{
System.out.println("服务器端启动....");
ServerSocket ss = new ServerSocket(port);
//接收服务器端的请求
Socket s = ss.accept();
//输出流,用于输出接收的图片字节流
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(UUID.randomUUID()+""+"."+ext)));
//接收客户端的输出流的信息
BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
//输出信息到客户端
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
int len = 0;
byte[] buf = new byte[1024];
while((len = bis.read(buf, 0, buf.length)) != -1) {
bos.write(buf, 0, len);
//刷新缓冲区
bos.flush();
}
out.println("true");
bos.close();
s.close();
ss.close();
}
}
客户端的代码
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* 客户端的实现
* @author L.Eric
*
*/
public class UploadPicClient {
public static void main(String[] args) {
try {
uploadPic("10.112.6.187", 7878, new File("pic.png"));
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @Description: TODO
* @param ip 服务器的IP
* @param port 服务器的端口
* @param picFile 需要上传的文件
* @throws UnknownHostException
* @throws IOException
* @author L.Eric
* create: 2013-4-27
*/
public static void uploadPic(String ip, int port, File picFile) throws UnknownHostException, IOException{
System.out.println("客户端启动.......");
Socket s = new Socket(ip, port);
//获取图片的输入流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(picFile));
//客户端的输出流
BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream());
//接收服务器端的输入流
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
byte[] buf = new byte[1024];
int len = 0;
while((len = bis.read(buf, 0, buf.length)) != -1) {
bos.write(buf, 0, len);
//刷新缓冲区
bos.flush();
}
s.shutdownOutput();
String msg = null;
msg = br.readLine();
if("true".equals(msg)) {
System.out.println("上传成功");
} else {
System.out.println("上传失败");
}
s.close();
}
}