需求:上传图片
客户端:
1、服务器端点;
2、读取客户端已有的图片数据;
3、通过socket输出流将数据发给服务端;
4、读取服务端反馈信息;
5、关闭资源。
import java.awt.Button;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class PictureClient {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket socket=new Socket("10.1.9.34",10008);
FileInputStream fis=new FileInputStream("C:\\Users\\Administrator\\Desktop\\picture\\1.jpg");
OutputStream out=socket.getOutputStream();
byte[] buf=new byte[1024];
int len=0;
while((len=fis.read(buf))!=-1){
out.write(buf,0,len);
}
//告诉服务端数据已写完
socket.shutdownOutput();
InputStream in=socket.getInputStream();
byte[] bufIn=new byte[1024];
int num=in.read(bufIn);
System.out.println(new String(bufIn,0,num));
fis.close();
socket.close();
}
}
服务端:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class PictureServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket(10008);
Socket socket=serverSocket.accept();
String ip=socket.getInetAddress().getHostAddress();
System.out.println(ip+"......connected");
InputStream in=socket.getInputStream();
FileOutputStream fos=new FileOutputStream("server.png");
byte[] buf=new byte[1024];
int len=0;
while((len=in.read())!=-1){
fos.write(buf,0,len);
}
OutputStream out=socket.getOutputStream();
out.write("上传成功".getBytes());
fos.close();
socket.close();
serverSocket.close();
}
}
可以看图片已从C盘上传到E盘