我实际上想在 Java 服务器和我的 Android 游戏之间编写 TCP 通信,以将数据保存到数据库中。曾经有一个全球排行榜。
实际上,我现在就编写了服务器,并且可以使用我编写的客户端连接到它,并希望稍后在 Android 中实现。这是来自客户端的一些代码:
public void saveToDatabase(String name , int level, int killpoints){
try {
Socket soc = new Socket("localhost", PORT);
DataOutputStream out = new DataOutputStream(soc.getOutputStream());
DataInputStream in = new DataInputStream(new BufferedInputStream(soc.getInputStream()));
//to call the save statement!
out.writeInt(0);
//give the stuff
out.writeUTF(name);
out.writeInt(level);
out.writeInt(level);
//close it
out.close();
in.close();
soc.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
}
}
服务器现在所做的是它获取第一行并根据值检查要做什么。在服务器上发生这种情况:
public void run() {
try {
DataOutputStream out = new DataOutputStream (socket.getOutputStream());
// DataInputStream in = new DataInputStream(new InputStreamReader(
// socket.getInputStream()));
DataInputStream in = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
Server.textArea.setText(Server.textArea.getText()+"Client connected: "+ clientNumber+ "\n");
int firstLine = in.readInt(); //get first line for switch
switch (firstLine) {
case 0:
// getting the whole objekt for the database in own lines!
String name = in.readUTF();
int level = in.readInt();
int kp = in.readInt();
Server.textArea.setText(Server.textArea.getText() + "SAVE: "
+ name + " Level: " + level + " KP: " + kp + "\n");
// Server.textArea.setText(Server.textArea.getText() + "SAVE called\n");
break;
case 1:
// else if return the top10
Server.textArea.setText(Server.textArea.getText()
+ "Return top10\n");
// outp.write("asdf string");
break;
default:
break;
}
out.close();
in.close();
socket.close();
Server.textArea.setText(Server.textArea.getText()
+ "Client disconnected: "+ clientNumber + "\n");
} catch (Exception e) {
System.out.println("IO error " + e);
}
}
我将服务器端的所有内容记录到一个文本区域,并在服务器端得到它:
我承诺com.saveToDatabase("test", 2, 123651);
如果我将所有内容都以 UTF 格式发送,我实际上还会得到一些奇怪的东西:
希望你能帮助我,甚至可以告诉我这是否也适用于 android。非常感谢。目前它没有正确转换字符串。
SAVE: Level: 1908 KP: 1702065249
Client disconnected: 0