Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于android的websocket服务器,java_Java_Android_Websocket - Fatal编程技术网

用于android的websocket服务器,java

用于android的websocket服务器,java,java,android,websocket,Java,Android,Websocket,我正在为Android构建一个简单的websocket服务器。比如说3.2,我尝试了一些早期的Android版本,结果也一样。在Android上尝试代码之前,我在Windows和Linux上的JavaSE下进行了测试。它在Chrome和Firefox上运行正常。 然而,在Android上它不起作用。请参阅代码中的注释 简言之: 我成功地通过了握手,浏览器确认连接正常。 我很高兴通过Websocket接收来自浏览器的所有消息 我无法发送任何东西:它只是无法到达javascript回调。 重试几次后

我正在为Android构建一个简单的websocket服务器。比如说3.2,我尝试了一些早期的Android版本,结果也一样。在Android上尝试代码之前,我在Windows和Linux上的JavaSE下进行了测试。它在Chrome和Firefox上运行正常。 然而,在Android上它不起作用。请参阅代码中的注释

简言之:

我成功地通过了握手,浏览器确认连接正常。 我很高兴通过Websocket接收来自浏览器的所有消息 我无法发送任何东西:它只是无法到达javascript回调。 重试几次后,浏览器有时会立即关闭websocket。 代码如下:

//BufferedOutput myout=new BufferedOutput(mysocket.getOutputStream()));

//myout was successfully used for handshaking before

String msg=”I want to send this”;

try {

  myout.write(129);//129=0x81); text frame 0x81=129
  int payloadlen=msg.length();
  myout.write(payloadlen);
  byte[] bts=msg.getBytes(Charset.forName("UTF-8"));
  myout.write(bts,0,payloadlen);
  myout.flush();//after this command client Browser closes websocket
                //firefox also gives error 
}
catch(IOException ee)
 {
 System.out.println("Error sending websocket message"+ee);
 try{myclose();}catch(IOException eio){}
 }
}

谢谢

您在哪里运行此代码?在活动或服务中

请注意,如果您需要创建一个定制的Web服务器,并且需要在Android上运行它,那么您应该将其实现为在自己的线程上运行的服务

如果您在一个活动上运行它(取决于android版本),则主线程不应该或不能在主线程上执行I/O操作,具体取决于android版本


希望能有帮助。

我解决了。原因是,在Android的情况下,我之前通过相同的连接发送了一些东西。虽然这是错误的,但在Chrome/Firefox中并没有产生任何错误。我花了两天时间,对我的Sun Java Websocket服务器和Android Websocket服务器这两种情况的结果进行了逐字节比较。

谢谢。我在内部活动和内部服务中都尝试过,结果都是一样的。在这两种情况下,代码都没有在主线程中运行。我有自己定制的Web服务器,它响应握手。握手成功,我可以使用相同的连接通过websocket从网络浏览器Firefox/Chrome接收文本消息。但是我不能发送任何东西。看起来好像我在向网络浏览器发送信号以关闭连接。当我在Sun Java Windows/Linux下运行代码时,这种情况不会发生。还有更多:我刚刚与wireshark核实,在这两种情况下,Sun Java和Android我的服务器都发送相同的数据包。神秘的事物