切记切记,因为字节流使用的是通道流,所以一定要在两个通道流代码里加flush();否则会存在图片大小不一致导致照片无法打开或者损失
服务器端:
package net_study_11;
import java.io.*;
import java.net.Socket;
public class UploadClient {
public static void main(String[] args) throws IOException {
Socket s =new Socket("192.168.10.103",9797);
BufferedInputStream bis =
new BufferedInputStream(new FileInputStream("这是图片.jpg"));
BufferedOutputStream bos =
new BufferedOutputStream(s.getOutputStream());
byte[] byts =new byte[1024];
int len;
while((len=bis.read(byts))!=-1)
{
bos.write(byts,0,len);
bos.flush();
}
s.shutdownOutput();
InputStream is =s.getInputStream();
byte[] cbyts=new byte[1024];
int clen =is.read(cbyts);
System.out.println(new String(cbyts,0,clen));
s.close();
}
}
客户端:
package net_study_11;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class UploadServer {
public static void main(String[] args) throws IOException {
ServerSocket ss =new ServerSocket(9797);
Socket s =ss.accept();
BufferedInputStream bis =
new BufferedInputStream(s.getInputStream());
BufferedOutputStream bos =
new BufferedOutputStream(new FileOutputStream("这是照片" +
".jpg") );
int len =0;
byte[] byts =new byte[1024];
while ((len=bis.read(byts))!=-1)
{
bos.write(byts,0,len);
bos.flush();
}
OutputStream os =s.getOutputStream();
os.write("图片传输成功".getBytes());
s.close();
}
}