私は実際に 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