こんにちはみんな、
私は私のAndroid用のチャットクライアントを作りたかったです。しかし、私は接続を取得できません。
まあ、多分あなたは私を少し助けることができます..
私のMainActivity.javaで私は呼び出します:
//connect to the server
SocketTask connection = new SocketTask(this);
connection.execute();
私のSocketTask.javaは次のようになります。
package chat.client;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import android.os.AsyncTask;
public class SocketTask extends AsyncTask<Void, Void, Void>{
private Socket socket;
private DataInputStream input;
protected PrintStream output;
private MainActivity main;
private Thread thrd;
public SocketTask(MainActivity main){
this.main = main;
}
@Override
protected Void doInBackground(Void... params) {
try {
socket = new Socket("192.168.178.23", 1338);
input = new DataInputStream(socket.getInputStream());
output = new PrintStream(socket.getOutputStream());
// submittes the name of the client
output.println("Mobile");
output.flush();
thrd = new Thread(new Runnable() {
public void run() {
while (!Thread.interrupted()) {
try {
final String data = input.readLine();
if (data != null)
main.runOnUiThread(new Runnable() {
//new Runnable(){
@Override
public void run() {
if(!data.equals("")){
//main.chatHistory.append(data+"\n");
main.addText(data);
}else{
//chatHistory.append("\n");
main.addText("");
}
}
});
//};
} catch (IOException e) {
//chatHistory.append("Verbindung zum Server abgebrochen!");
main.addText("Verbindung zum Server abgebrochen!");
}
}
}
});
thrd.start();
} catch (Exception e) {
//chatHistory.append("Es konnte keine Verbindung zum Server aufgebaut werden!");
main.addText("Es konnte keine Verbindung zum Server aufgebaut werden!"+e);
}
return null;
}
}
しかし、起動すると、次のようになります:
02-27 16:32:05.875:E / SensorManager(26146):スレッド開始
また、「connection.execute()」の代わりに「connection.doInBackground()」を呼び出そうとすると(これはまったく意味がないことはわかっています)、「networkonmainthreadexception」が表示されますが、すでにAsyncTaskでそれを修正しました。ええと、私はAndroidに不慣れですが、私はすでにたくさんグーグルで検索しました。私がそんなに愚かであるかどうかはわかりませんが、今はあきらめて、ここに登録しました。たぶんあなたの誰かが私に、私が間違っていることを教えてくれるでしょう。
(MainActivityクラスを投稿する必要があるかどうかわかりません。)
ありがとうございます。:)
編集:これらすべての回答をありがとうございました。私が少し拡張しすぎていることを知っています。少し時間を取って試してみて、すべてのヒントを理解してください。ありがとうございます。