A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

毕老师上传图片中的代码     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吗 ?请具体解释下

1 个回复

倒序浏览
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之后则不再改变)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马