gpt4 book ai didi

java - 有什么问题吗?服务器响应消息的不同结果

转载 作者:行者123 更新时间:2023-12-01 09:36:39 25 4
gpt4 key购买 nike

我想知道代码中有什么错误。

我想得到正确的结果。

但是现在,在服务器端发送奇怪的结果。

下面的链接是引用。

https://firebase.google.com/docs/cloud-messaging/server#choose

结果如下。

connect ready
host: fcm-xmpp.googleapis.com, and port: 5236
connect ok
connect!
msg: <stream:stream
to="gcm.googleapis.com"version="1.0"xmlns="jabber:
client"xmlns:stream="http://eth erx.jabber.org/streams">
channelConnected
e.getMessage(): BigEndianHeapChannelBuffer(ridx=0, widx=7, cap=7)
MessageDumpByte> - length:<7>

[0000] 15 03 01 00 02 02 46 ......F
messageReceived:

添加到,它发布了我制作的简单代码。

public class client2
{
final String host = "fcm-xmpp.googleapis.com";
// final String host = "127.0.0.1";
final int port = 5236;
Channel channel = null;

public static void main(String[] args) throws Exception
{
client2 client = new client2();
client.init();
}

public void init()
{
ClientBootstrap bootstrap = new ClientBootstrap(
new NioClientSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool()));

bootstrap.setPipelineFactory(new ChannelPipelineFactory()
{
public ChannelPipeline getPipeline() throws Exception
{
return Channels.pipeline(new ClientHandler());
}
});

System.out.println("connect ready");
System.out.println("host: " + host + ", and port: " + port);

ChannelFuture future = bootstrap.connect(new InetSocketAddress(host,
port));
channel = future.getChannel();

System.out.println("connect ok");
}
}

class ClientHandler extends SimpleChannelUpstreamHandler
{

private ChannelBuffer firstMessage;
private final AtomicLong transferredBytes = new AtomicLong();

public ClientHandler()
{
}

public long getTransferredBytes()
{
return transferredBytes.get();
}

@Override
public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e)
{

System.out.println("connect!");

StringBuilder msg = new StringBuilder();

msg.append("<stream:stream to=").append("\"")
.append("gcm.googleapis.com").append("\"").append("version=")
.append("\"").append("1.0").append("\"").append("xmlns=")
.append("\"").append("jabber:client").append("\"")
.append("xmlns:stream=").append("\"")
.append("http://etherx.jabber.org/streams").append("\"")
.append(">");

System.out.println("msg: " + msg.toString());

firstMessage = ChannelBuffers.copiedBuffer(msg.toString(),
CharsetUtil.UTF_8);
e.getChannel().write(firstMessage);

}

@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)
{
System.out.println("e.getMessage(): " + e.getMessage());
transferredBytes.addAndGet(((ChannelBuffer) e.getMessage())
.readableBytes());

ChannelBuffer cb = (ChannelBuffer) e.getMessage();
byte[] message = cb.array();

try
{
String dump = Utility.MessageDumpByte(message);
System.out.println(dump);
System.out.println("messageReceived: "
+ new String(message, "UTF-8"));
}
catch (Exception e1)
{
e1.printStackTrace();
}

}
}

我使用了jdk 1.7,Netty版本3.X

并且是引用本文档制作的。

  1. https://github.com/xose/netty-xmpp

  2. http://www.programcreek.com/java-api-examples/index.php?source_dir=gcm_server-master/src/com/grokkingandroid/sampleapp/samples/gcm/ccs/server/CcsClient.java#

最佳答案

您缺少的是必须首先建立 TLS 连接(文档中对此有非常清楚的解释)。

您收到的回复是:

0x15       Alert
0x03 0x01 TLS version 1.0
0x00 0x02 Message Length
0x02 Fatal
0x46 Certificate unknown

所以,去研究如何使用netty的SSL处理程序。

关于java - 有什么问题吗?服务器响应消息的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38843436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com