| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 554 人关注过本帖
标题:麻烦帮看段代码
只看楼主 加入收藏
半月
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-1-12
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:1 
麻烦帮看段代码
public static void sendFile2Server(File local_file, String targeFile,
            String server, int port, String id) {
        Socket socket = null;
        InputStream iis = null;
        OutputStream os = null;
        try {
            socket = new Socket(server, port);
            byte[] fileNameBuf = targeFile.getBytes("GBK");
            int fls = fileNameBuf.length;
            byte[] fileNamelen = new byte[] { 0, 0, 0, 0 };
            fileNamelen[0] = (byte) ((fls >> 24) & 0xff);
            fileNamelen[1] = (byte) ((fls >> 16) & 0xff);
            fileNamelen[2] = (byte) ((fls >> 8) & 0xff);
            fileNamelen[3] = (byte) ((fls >> 0) & 0xff);

            os = socket.getOutputStream();
            os.write(SEND_HEADER);
            os.write(fileNamelen);
            os.write(fileNameBuf);
            os.flush();
            iis = new FileInputStream(local_file);
            byte[] buf = new byte[1024];
            int rl = iis.read(buf);
            while (rl > 0) {
                os.write(buf, 0, rl);
                rl = iis.read(buf);
            }
            FileTransferStauts.statusMap.put(id, "finished");
        } catch (Exception e) {
            FileTransferStauts.statusMap.put(id, e.getMessage());
        } finally {
            try {
                if (os != null)
                    os.close();
                if (socket != null && !socket.isClosed())
                    socket.close();
                if (iis != null)
                    iis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

红色的部分,对filename的操作有什么作用?
搜索更多相关主题的帖子: 麻烦 代码 
2010-01-12 12:35
卡卡小罗
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:334
专家分:131
注 册:2008-12-11
收藏
得分:20 
红色的部分,对filename的操作有什么作用?

把fls的32位数分成四个八位以便发送。
fls是int型32位数,fileNamelen[0] = (byte) ((fls >> 24) & 0xff); 是把fls的高八位
存到byte型数组fileNamelen的第一个位置,同样
fileNamelen[1] = (byte) ((fls >> 16) & 0xff);
fileNamelen[2] = (byte) ((fls >> 8) & 0xff);
fileNamelen[3] = (byte) ((fls >> 0) & 0xff); 是分别存fls的次高八位、次低八位和低八位。
            

匣浅难羁宝剑锋 玉藏石中也玲珑
初试清啼长天破 云光凝碧远岚平
2010-01-12 15:02
快速回复:麻烦帮看段代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.066762 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved