package p7.uploadpic;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import .Socket;
import .UnknownHostException;
public class UploadPicClient {
public static void main(String[] args) throws UnknownHostException, IOException {
//1 创建客户端socket
Socket s=new Socket("10.194.43.59",10006);
//2 读取客户端要上传的图片文件
FileInputStream fis=new FileInputStream("D:\\3.png");
//3 获取socket输出流 将读到的图片数据发送给服务端
OutputStream out=s.getOutputStream();
byte[]buf=new byte[1024];
int len=0;
while((len=fis.read(buf))!=-1) {
out.write(buf,0,len);
}
//告诉服务端说:这边的数据发送完毕 让服务端停止读取
s.shutdownOutput();
//读取服务端发回的内容。
InputStream in=s.getInputStream();
byte[]bufIn=new byte[1024];
int lenIn=in.read(bufIn);
String text=new String(bufIn, 0, lenIn);
System.out.println(text);
fis.close();
s.close();
}
}package p7.uploadpic;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import .ServerSocket;
import .Socket;
import p6.uploadtext.UploadClient;
public class UploadPicServer {
public static void main(String[] args) throws IOException {
//创建tcp的socket服务端
ServerSocket ss=new ServerSocket(10006);
//获取客户端。
while(true) {
Socket s=ss.accept();
new Thread(new UploadTask(s)).start();
//oldMethod(s);
}
}
private static void oldMethod(Socket s) throws IOException, FileNotFoundException {
String ip=s.getInetAddress().getHostAddress();
System.out.println(ip+"....connected");
//读取客户端发来的数据
InputStream in=s.getInputStream();
//将读取到的数据存储到一个文件中
File dir=new File("d:\\pic");
if(!dir.exists())
dir.mkdirs();
File file=new File(dir,ip+".png");
FileOutputStream fos=new FileOutputStream(file);
byte[]buf=new byte[1024];
int len=0;
while((len=in.read(buf))!=-1) {
fos.write(buf, 0, len);
}
//获取socket输出流 将上传成功字样发给客户端
OutputStream out=s.getOutputStream();
out.write("上传成功".getBytes());
}
}
package p7.uploadpic;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import .Socket;
import java.util.concurrent.CountDownLatch;
public class UploadTask implements Runnable {
public int count=0;
private Socket s;
public UploadTask(Socket s) {
this.s=s;
}
@Override
public void run() {
String ip=s.getInetAddress().getHostAddress();
System.out.println(ip+"....connected");
try {
//读取客户端发来的数据
InputStream in=s.getInputStream();
//将读取到的数据存储到一个文件中
File dir=new File("d:\\pic");
if(!dir.exists())
dir.mkdirs();
File file=new File(dir,ip+".png");
if(file.exists()) {
file=new File(dir,ip+"+("+(count++)+")"+".png");
}
FileOutputStream fos=new FileOutputStream(file);
byte[]buf=new byte[1024];
int len=0;
while((len=in.read(buf))!=-1) {
fos.write(buf, 0, len);
}
//获取socket输出流 将上传成功字样发给客户端
OutputStream out=s.getOutputStream();
out.write("上传成功".getBytes());
s.close();
fos.close();
}catch (Exception e) {
}
}
}
















