本帖最后由 赵兵锋 于 2012-6-10 03:49 编辑
- public class PicServer {
- public static void main(String[] args) throws Exception {
- ServerSocket ss = new ServerSocket(1007);
- Socket s = ss.accept();
- InputStream in = s.getInputStream();
- FileOutputStream fos = new FileOutputStream("e:/server.jpg");
- byte[] buf = new byte[1024];
- OutputStream out = s.getOutputStream();
- int len = 0;
- while ((len = in.read(buf)) ==1024) {//只有当客户端的输出流close后,此处的len才会为-1,但客户端若将输出流关掉,连接也会关掉。所以这里以读出的是否是1024个字节判断,不是1024就表示这是最后一组数据了
- fos.write(buf, 0, len);
- }
- fos.write(buf, 0, len);//将最后一组数据写入到文件
- fos.flush();
- fos.close();//文件流可以关掉了
- out.write("上传成功".getBytes());
- out.flush();//写后一定要flush一下,强制将输出缓冲区中数据清空,写入流中
- in.close();//此时才可以关输入流,提早关会导致连接关闭
- s.close();
- ss.close();
- }
- }
复制代码- public class PicClient {
- public static void main(String [] args)throws Exception
- {
- Socket s=new Socket("127.0.0.1",1007);
- FileInputStream fis=new FileInputStream("e:/1.jpg");
- OutputStream out=s.getOutputStream();
- byte[] buf=new byte[1024];
- int len=0;
- while((len=fis.read(buf))!=-1)
- {
- out.write(buf,0,len);
- }
- out.flush();//一定要有这步,保证数据都传过去了
- fis.close();//文件流这时可以关了
- InputStream in=s.getInputStream();//在此之前一定不能关闭out,不然连接也会关闭,这里就会报错
- byte[] bufIn= new byte[1024];
- int num=in.read(bufIn);
- System.out.println(new String(bufIn,0,num));
- out.close();//此时才可以关闭流
- s.close();
- }
- }
复制代码 |