私が作成しようとしているMMOの場合、Javaサーバーに接続しているAndroidクライアントがあります。サーバーが私のコンピューターで直接実行されている間、Androidはエミュレーターで実行されています。彼らはうまく接続して接続を確認できますが、クライアントは奇妙な場所で停止し、理由がわかりません。
サーバーのWorkerThreadのRunメソッド:
public void run() {
try {
InputStream input = clientSocket.getInputStream();
OutputStream output = clientSocket.getOutputStream();
String returns="";
String s="";
try{
s= inputStreamToString(input).toString();
}
catch(Exception e)
{}
output.write(("HTTP/1.1 200 OK\n\nWorkerRunnable: " +
this.serverText + " - " +
"").getBytes());
output.close();
input.close();
} catch (IOException e) {
//report exception somewhere.
e.printStackTrace();
}
}
InputStream stringbulider:
private static StringBuilder inputStreamToString(InputStream is) {
String line = "";
StringBuilder total = new StringBuilder();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
try {
while ((line = rd.readLine()) != null) {
total.append(line);
}
} catch (Exception e) {
}
return total;}
クライアントの接続方法:
public String sendMessage(String message)
{
try{ clientSocket = new Socket("10.0.2.2", 9000);
String modifiedSentence;
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
outToServer.writeBytes(message+"\n");
//Stops here
modifiedSentence = inFromServer.readLine();
outToServer.close();
inFromServer.close();
clientSocket.close();
Log.v(modifiedSentence, modifiedSentence);
return modifiedSentence;}
catch(Exception e)
{
return "";}
}
おかげで、どんな助けもいただければ幸いです。
編集:クライアントまたはサーバーのいずれかを閉じると、もう一方は前者のメッセージを受信できますが、両方が開いていると受信できません...