我一直在研究一个基本上像Minechat(基于文本的应用程序,只是查看聊天)的java程序.我从来没有真正使用过网络,所以问题是弄清楚如何正确发送数据包.我目前处于与服务器创建握手的位置.经过几个小时的研究,我提出了以下代码,但它总是遇到"Failed!(Exception)"消息.对我而言,一切看起来都是正确的,但据我所知,这可能是100%错误的.如果有人能指出我在这里做错了什么,我真的很感激.
public static void main(String[] args) throws IOException {
host = new InetSocketAddress("162.244.165.111", 48040);
socket = new Socket();
System.out.println("Connecting...");
socket.connect(host, 3000);
System.out.println("Done!");
System.out.println("Making streams...");
output = new DataOutputStream(socket.getOutputStream());
input = new DataInputStream(socket.getInputStream());
System.out.println("Done!");
System.out.println("Attempting handshake... "+host.getAddress().toString().substring(1));
byte[] msg = ("47;"+host.getAddress().toString().substring(1)+";"+host.getPort()+";2;").getBytes(Charset.forName("UTF-16"));
output.writeInt(msg.length+Integer.valueOf(0x00));
output.writeByte(0x00);
output.write(msg);
output.flush();
try {
if (input.readByte() != 0x02)
System.out.println("Failed!");
else
System.out.println("Done!");
} catch (EOFException e) {
System.out.println("Failed! (Exception)");
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:更多的研究表明我使用字节数组,但这让我对如何表示字符串和使用字符串感到困惑?
我正在寻找为我正在创建的游戏创建游戏服务器后端.我们目前正在使用Firebase处理数据和广告,Firebase内置了身份验证功能.是否可以让用户通过Firebase的auth系统登录我们的应用程序,然后在他们连接到游戏服务器时确认用户的身份验证,以确保他们是谁?
基本上,在有人登录我们的firebase之后,我们是否可以将该身份验证信息用于单独的服务器,以及需要使用哪种协议/方法(如果有特定的协议/方法)