免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 方兆国
打印 上一主题 下一主题

[Android] 代理服务器只能给客户端发送第一组消息 [复制链接]

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
11 [报告]
发表于 2013-06-21 23:25 |只看该作者
这个函数是用来给播放器响应HTTP响应头的
  1. private void SendHead(long length) {
  2.                 String status = "HTTP:/1.0 200 OK\r\n";
  3.                 String mine = "MIME-Version: 1.0\r\n";
  4.                 String contentType = "Content-type: text/html\r\n";
  5.                 String contentLength = "Content-Length: " + length + "\r\n";
  6.                 try {
  7.                         out.write(status.getBytes());
  8.                         out.write(mine.getBytes());
  9.                         out.write(contentType.getBytes());
  10.                         out.write(contentLength.getBytes());
  11.                         out.write("\r\n".getBytes());
  12.                 } catch (IOException e) {
  13.                         e.printStackTrace();
  14.                 }
  15.         }
复制代码
我还是对那个"HTTP:/1.0 200 OK\r\n";有些疑惑,我应该随着客户端变呢,还是要固定一种协议呢

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
12 [报告]
发表于 2013-06-21 23:28 |只看该作者
这个函数是从web服务器中读取数据的函数
  1. private void WorkNet(int file_id, String filename) {
  2.                 String address = filename, sql = null;
  3.                 URL url = null;
  4.                 int length = 0, sum = 0, num = 0;
  5.                 int[] block_id = new int[100];
  6.                 try {
  7.                         while (isAlive) {
  8.                                 sum = 0;
  9.                                 num = 0;
  10.                                 url = new URL(host + address);
  11.                                 is = url.openStream();
  12.                                 while ((length = is.read(bytes)) > 0) {
  13.                                         sum += length;
  14.                                         data = this.bytecopy(bytes, length);
  15.                                         sql = "{?=call fun_Data(?,?,?,?)}";
  16.                                         block_id[num++] = database.Rrocedure(sql, filename, data,
  17.                                                         length, file_id);

  18.                                 }
  19.                                 this.SendHead(sum);
  20.                                 for (int i = 0; i < num; i++) {
  21.                                         this.WorkDB(block_id[i]);
  22.                                 }
  23.                                 is.close();
  24.                         }
  25.                 } catch (MalformedURLException e) {
  26.                         e.printStackTrace();
  27.                 } catch (IOException e) {
  28.                         e.printStackTrace();
  29.                 }
  30.         }
复制代码
每次读取数据结束后,将数据存入数据库中,然后调用WorkDB函数,将数据返回给播放器

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
13 [报告]
发表于 2013-06-21 23:29 |只看该作者
这是从数据库中读取数据的函数
  1. private void WorkDB(int block_id) {
  2.                 String sql = "select data from Data where id=" + block_id + ";";
  3.                 int length = 0;
  4.                 rs = database.Read(sql);
  5.                 try {
  6.                         if (rs.next()) {
  7.                                 is = rs.getBinaryStream(1);
  8.                         }
  9.                         rs.close();
  10.                         database.ResultSetClose();
  11.                         while ((length = is.read(bytes)) > 0) {
  12.                                 data = this.bytecopy(bytes, length);
  13.                                 out.write(data);
  14.                         }
  15.                         is.close();
  16.                 } catch (SQLException e) {
  17.                         e.printStackTrace();
  18.                 } catch (IOException e) {
  19.                         e.printStackTrace();
  20.                 }
  21.         }
复制代码

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
14 [报告]
发表于 2013-06-21 23:31 |只看该作者
在这个程序中使用了MySQL的Blob字段,通过从控制台看到的数据显示,能够将读取的数据保存到数据库中,但是只能保存前两个数据段,后面的视频就无法读入了,不知道问题出现在哪里,怎么解决问题

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
15 [报告]
发表于 2013-06-21 23:33 |只看该作者
而且还在java程序中调用了MySQL的函数
就是Database类Rrocedure函数
Database类是做得用来存取数据库中数据的类
Rrocedure函数用来调用MySQL函数,并且负责绑定参数
Rrocedure函数被重载过

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
16 [报告]
发表于 2013-06-21 23:37 |只看该作者
这是程序运行过程中的一部分日志,我只打开了一个播放器窗口,并且输入url地址+回车后,没有做任何操作,可是还是有这么多的线程被启用,而且那个HTTP协议版本也不一致,User-Agent: 也不一致
  1. I am the 10        Thread-0
  2. Reading……        GET /starry-tales.mpd HTTP/1.0
  3. 修改前GET /starry-tales.mpd HTTP/1.0
  4. 修改后starry-tales.mpd
  5. I am the 10        Thread-0
  6. Reading……        Host: localhost
  7. Reading……        User-Agent: GPAC/0.5.0-rev4065
  8. Reading……        Accept: */*
  9. Reading……        Connection: Keep-Alive
  10. Reading……        Accept-Language: zh
  11. Reading……        Icy-Metadata: 1
  12. Reading……       
  13. Reading……        null
  14. Exception in thread "Thread-0" java.lang.NullPointerException
  15.         at com.liujiaqi.proxy.ProxyConnect.read(ProxyConnect.java:178)
  16.         at com.liujiaqi.proxy.ProxyConnect.WorkNet(ProxyConnect.java:127)
  17.         at com.liujiaqi.proxy.ProxyConnect.Work(ProxyConnect.java:82)
  18.         at com.liujiaqi.proxy.ProxyConnect.run(ProxyConnect.java:49)
  19.         at java.lang.Thread.run(Thread.java:724)
  20. I am the 12        Thread-1
  21. Reading……        GET /starry-tales.mpd HTTP/1.1
  22. 修改前GET /starry-tales.mpd HTTP/1.1
  23. 修改后starry-tales.mpd
  24. I am the 12        Thread-1
  25. Reading……        User-Agent: Lavf52.33.0
  26. Reading……        Accept: */*
  27. Reading……        Range: bytes=0-
  28. Reading……        Host: localhost:9090
  29. Reading……        Authorization: Basic
  30. Reading……        Connection: close
  31. Bye
  32. 修改前starterror end
  33. 修改后error
  34. I am Closing
  35. Exception in thread "Thread-1" java.lang.NullPointerException
  36.         at com.liujiaqi.proxy.ProxyConnect.close(ProxyConnect.java:60)
  37.         at com.liujiaqi.proxy.ProxyConnect.run(ProxyConnect.java:51)
  38.         at java.lang.Thread.run(Thread.java:724)
  39. I am the 13        Thread-2
  40. Reading……        GET /starry-tales.mpd HTTP/1.1
  41. 修改前GET /starry-tales.mpd HTTP/1.1
  42. 修改后starry-tales.mpd
  43. I am the 13        Thread-2
  44. Reading……        User-Agent: Lavf52.33.0
  45. Reading……        Accept: */*
  46. Reading……        Range: bytes=0-
  47. Reading……        Host: localhost:9090
  48. Reading……        Authorization: Basic
  49. Reading……        Connection: close
  50. Bye
  51. 修改前starterror end
  52. 修改后error
  53. I am Closing
  54. Exception in thread "Thread-2" java.lang.NullPointerException
  55.         at com.liujiaqi.proxy.ProxyConnect.close(ProxyConnect.java:60)
  56.         at com.liujiaqi.proxy.ProxyConnect.run(ProxyConnect.java:51)
  57.         at java.lang.Thread.run(Thread.java:724)
  58. I am the 14        Thread-3
  59. Reading……        GET /starry-tales.mpd HTTP/1.0
  60. 修改前GET /starry-tales.mpd HTTP/1.0
  61. 修改后starry-tales.mpd
  62. I am the 14        Thread-3
  63. Reading……        Host: localhost
  64. Reading……        User-Agent: GPAC/0.5.0-rev4065
  65. Reading……        Accept: */*
  66. Reading……        Connection: Keep-Alive
  67. Reading……        Accept-Language: zh
  68. Reading……        Icy-Metadata: 1
  69. Reading……       
  70. I am the 15        Thread-4
  71. Reading……        GET /starry-tales_dash.mp4 HTTP/1.0
  72. 修改前GET /starry-tales_dash.mp4 HTTP/1.0
  73. 修改后starry-tales_dash.mp4
  74. I am the 15        Thread-4
  75. Reading……        Host: localhost
  76. Reading……        User-Agent: GPAC/0.5.0-rev4065
  77. Reading……        Accept: */*
  78. Reading……        Connection: Keep-Alive
  79. Reading……        Accept-Language: zh
  80. Reading……        Icy-Metadata: 1
  81. Reading……       
  82. Reading……        GET /starry-tales-$RepresentationID$-$Number$1.m4s HTTP/1.0
  83. 修改前GET /starry-tales-$RepresentationID$-$Number$1.m4s HTTP/1.0
  84. 修改后starry-tales-$RepresentationID$-$Number$1.m4s
  85. http://localhost/starry-tales-$RepresentationID$-$Number$1.m4s
  86. com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '2-2' for key 'PRIMARY'
  87.         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  88.         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
  89.         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  90.         at java.lang.reflect.Constructor.newInstance(Constructor.java:414)
  91.         at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
  92.         at com.mysql.jdbc.Util.getInstance(Util.java:386)
  93.         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1041)
  94.         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187)
  95.         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119)
  96.         at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
  97.         at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
  98.         at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2809)
  99.         at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2758)
  100.         at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:894)
  101.         at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:732)
  102.         at com.liujiaqi.proxy.Database.Write(Database.java:44)
  103.         at com.liujiaqi.proxy.ProxyConnect.WorkNet(ProxyConnect.java:111)
  104.         at com.liujiaqi.proxy.ProxyConnect.Work(ProxyConnect.java:82)
  105.         at com.liujiaqi.proxy.ProxyConnect.run(ProxyConnect.java:49)
  106.         at java.lang.Thread.run(Thread.java:724)
  107. I am the 15        Thread-4
  108. Reading……        Host: localhost
  109. Reading……        User-Agent: GPAC/0.5.0-rev4065
  110. Reading……        Accept: */*
  111. Reading……        Connection: Keep-Alive
  112. Reading……        Accept-Language: zh
  113. Reading……        Icy-Metadata: 1
  114. Reading……       
复制代码

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
17 [报告]
发表于 2013-06-21 23:39 |只看该作者
上面的报错日志中的最末尾就停在那儿了
可是视频一点儿都看不到
结束之后察看数据库,在Data表中只有两个记录
因为用到了mpd格式,因此第一个记录时mpd文件的内容,第二个是视频片断的内容,在控制台下当然是乱码

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
18 [报告]
发表于 2013-06-21 23:41 |只看该作者
这些都是在PC端测试的,用手机测试的话,也是这样,一直有问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP