0
EDIT:問題は、Androidデバイスがサーバーからの応答を受け取るときのClient.classの入力です。これらは、クラッシュの原因となる次の行以下のとおりです。ここでAndroidクライアントソケットIOException
InputStream input = client.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
String text;
while ((text = reader.readLine()) != null) {
Log.d("ClientLog", "Received from Server"+ text);
}
アンドロイドで私のClient.classです:
public class Client implements Runnable{
public Client() {
}
@Override
public void run() {
try {
Log.d("ClientLog", "Socket creation incoming");
Socket client = new Socket("localhost", 5555);
Log.d("ClientLog", "Client has been started");
// Streams:
OutputStream out = client.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
InputStream input = client.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
// -----------------------------------------------------------------------
writer.write("Test");
writer.newLine();
writer.flush();
String text;
while ((text = reader.readLine()) != null) {
Log.d("ClientLog", "Received from Server"+ text);
}
writer.close();
reader.close();
} catch (UnknownHostException e) {
Log.d("ClientLog", "Error: Host not found");
e.printStackTrace();
} catch (IOException e) {
Log.d("ClientLog", "Error: IOException");
e.printStackTrace();
}
}
}
とJavaで私Server.classを必要に応じて:
public class Server {
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(30);
ServerSocket server;
try {
server = new ServerSocket(5555);
System.out.println("Server has been started on Port 5555");
while(true) {
try {
Socket client = server.accept();
//Thread t = new Thread(new Handler(client));
//t.start();
executor.execute(new Handler(client));
} catch (IOException e) {
System.out.println("Error IOExceotion");
e.printStackTrace();
}
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
Server.classに必要なHandler.class:
public class Handler implements Runnable{
private Socket client;
public Handler(Socket pClient) {
client = pClient;
}
@Override
public void run() {
try {
// Streams:
OutputStream out = client.getOutputStream();
PrintWriter writer = new PrintWriter(out);
InputStream input = client.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
// -----------------------------------------------------------------------
String text = null;
while ((text = reader.readLine()) != null) {
writer.write(text+ "\n");
writer.flush();
System.out.println("Recieved from Client: "+ text);
}
//Close Streams
writer.close();
reader.close();
client.close();
} catch (IOException e) {
System.out.println("Error IOException");
e.printStackTrace();
}
}
}
IOExceptionは、クライアントがサーバーへの接続を確立できないことを意味します。電話のようなアンドロイドデバイスを使用している場合は、一部のアクセス許可を有効にする必要があります。あなたはそれについてまだ見てきましたか? https://stackoverflow.com/questions/4074808/java-socket-ioexception-permission-denied – user2570465
@ user2570465ええ、私はこの記事を読んで、私はすべてのインターネット権限を持っています。私はAndroidの携帯電話にアプリケーションを読み込むと、サーバーがテストメッセージを取得するが、アプリケーションがクラッシュします。接続の問題は、Androidエミュレータ – Urbs
Okから発生する可能性があります。ですから、 'Socket client = new Socket(" localhost "、5555);'のIOExceptionで説明したエラーは修正されました。詳細とトレースバックを編集しますか? – user2570465