Java TCP サーバー プログラムを作成しました。そして、そのプログラムを自分の PC で実行します。Androidエミュレーターで実行するJava TCPクライアントプログラムを作成しました。Androidエミュレーターを使用しているため、IPアドレス10.0.2.2を使用してサーバーに接続します。しかし、パフォーマンスは非常に悪いです。サーバーは、約 8 ~ 10 分後にクライアントから送信されたデータを受信しています。また、エミュレーターはサーバーからデータを受信していません。どこが間違っているか見てください。
TCP サーバー (PC で実行):
import java.io.*;
import java.net.*;
class TCPServer
{
public static void main(String argv[]) throws Exception
{
String clientSentence;
String capitalizedSentence=null;
ServerSocket welcomeSocket = new ServerSocket(9000);
while(true)
{
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
System.out.println("Received: " + clientSentence);
if(clientSentence.equals("IS COMPUTER ON?"))
{
capitalizedSentence = "YES SYSTEM IS ON.";
}
outToClient.writeBytes(capitalizedSentence);
}
}
}
TCP クライアント (Android エミュレーターで実行):
package a.b.c;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class WifitestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try
{
String sentence="IS COMPUTER ON?";
String modifiedSentence=sentence;
Socket clientSocket = new Socket("10.0.2.2", 9000);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
outToServer.writeBytes(sentence);
modifiedSentence = inFromServer.readLine();
TextView a=(TextView)findViewById(R.id.textView1);
a.setText(modifiedSentence);
a.showContextMenu();
clientSocket.close();
}
catch(Exception e)
{
TextView a=(TextView)findViewById(R.id.textView1);
a.setText(e.toString());
a.showContextMenu();
}
}
}