黑马程序员技术交流社区

标题: 毕老师上传图片中的代码 import java.io.*; import java.net.*; class PicC [打印本页]

作者: 毕博    时间: 2012-4-26 13:00
标题: 毕老师上传图片中的代码 import java.io.*; import java.net.*; class PicC
毕老师上传图片中的代码     import java.io.*;
import java.net.*;
class  PicClient
{
        public static void main(String[] args)throws Exception
        {
                if(args.length!=1)
                {
                        System.out.println("请选择一个jpg格式的图片");
                        return ;
                }




                File file = new File(args[0]);
                if(!(file.exists() && file.isFile()))
                {
                        System.out.println("该文件有问题,要么补存在,要么不是文件");
                        return ;

                }

                if(!file.getName().endsWith(".jpg"))
                {
                        System.out.println("图片格式错误,请重新选择");
                        return ;
                }

                if(file.length()>1024*1024*5)
                {
                        System.out.println("文件过大,没安好心");
                        return ;
                }
               



                Socket s = new Socket("192.168.1.254",10007);

                FileInputStream fis = new FileInputStream(file);

                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 num = in.read(bufIn);
                System.out.println(new String(bufIn,0,num));

                fis.close();
                s.close();
        }
}
有基础不明白:一,s.shutdownOutput()只是告诉.告诉服务端数据已写完,有没有别的作用
                s.shutdownOutput();
                   二,int num = in.read(bufIn);的作用是把in的数据写入到bufin数组中,并bufin的数组长度赋值给num吗 ?请具体解释下

作者: 徐慧书    时间: 2012-4-27 16:40
shtdownOutput():
Disables the output stream for this socket. For a TCP socket, any previously written data will be sent followed by TCP's normal connection termination sequence. If you write to a socket output stream after invoking shutdownOutput() on the socket, the stream will throw an IOException.
这是api上的说明, 调用该方法后会吧以前所有写在输出流中的数据发送出去,并且关闭这个socket连接output stream流,
in.read(bufIn):
把in中的数据读入到bufIn数组中并且返回这次读入的字节数,返回给 num, (注意是这次读到的字节数长度而不是bufIn数组的长度,数组长度在new之后则不再改变)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2