快速业务通道

使用JSR-82 API实现OBEX图像传输 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
if there''s no problem        // then this method should return null as specified by the javadoc        return failure_message;      }      // this is method 3 of 4 needed to be implemented by      // the CancellableTask interface      public boolean hasFailed(){        return isOperationFailed;      }      // this is method 4 of 4 needed to be implemented by      // the CancellableTask interface         public void run(){        try{          connection = Connector.open(btConnectionURL);          // connection obtained          // now, let''s create a session and a headerset objects          ClientSession cs = (ClientSession)connection;          HeaderSet hs = cs.createHeaderSet();          // now let''s send the connect header          cs.connect(hs);          hs.setHeader(HeaderSet.NAME, filename);          hs.setHeader(HeaderSet.TYPE, "image/jpeg");          hs.setHeader(HeaderSet.LENGTH, new Long(file.length));          Operation putOperation = cs.put(hs);          OutputStream outputStream = putOperation.openOutputStream();          outputStream.write(file);          // file push complete          outputStream.close();          putOperation.close();          cs.disconnect(null);          connection.close();        } catch (Exception e){          isOperationFailed = true;          failure_message = e.toString();        }      }    } 

使用JSR-82 API实现OBEX图像传输(6)

时间:2011-07-28 Bruce Hopkins

现在,通过研究 ObjectPusher 内部类的 run() 方法来深入地了解 OBEX 协议。了解 OBEX 协议的最 佳方式是观察 OBEX 客户端和服务器之间的交互,如以下图 9 所示:

使用JSR-82 API实现OBEX图像传输 - 编程入门网

图 9:使用 OBEX 协议的客户端和服务器交互示例

图 9 中所示的场景发生在客户端和服务器建立了物理蓝牙连接的情况下,在 FilePusher 中,这是通 过以下代码实现的:

        connection = Connector.open(btConnectionURL);          // connection obtained

建立了连接之后,就应该通过将该连接对象更改成 ClientSession 对象来创建客户端和服务器之间的 会话:

        // now, let''s create a session and a headerset object          ClientSession cs = (ClientSession)connection;

现在,建立会话之后,再看图 9。请注意客户端发送 OBEX 操作(如 Connect、Setpath、Get、Push 等),服务器将借助 OBEX Response Code(160、161、193、196等)响应客户端。以下代码展示如何发 送 Connect 操作:

        // now let''s send the connect operation          cs.connect(hs);

从以下代码片断可以看出,OBEX 是通过蓝牙技术传输文件的首选方式(相比 RFCOMM 或 L2CAP),因 为可以使用报头设置关于要传输文件的元数据:

        hs.setHeader(HeaderSet.NAME, filename);          hs.setHeader(HeaderSet.TYPE, "image/jpeg");          hs.setHeader(HeaderSet.LENGTH, new Long(file.length));

这样,接受者就能在接收该文件之前了解文件的名称、文

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号