大家好,
我想为我的 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): thread start
此外,当我尝试调用“connection.doInBackground()”而不是“connection.execute()”时(我知道这根本没有任何意义),我得到一个“networkonmainthreadexception” - 但我想我'已经用 AsyncTask 解决了这个问题。好吧,我是 Android 新手,但我已经用谷歌搜索了很多,不知道我是不是那么愚蠢,但现在我放弃了,所以我在这里注册了我。也许你们中的某个人可以告诉我,我做错了什么..
(不确定我是否需要发布我的 MainActivity 类..)
谢谢!:)
编辑:谢谢大家的所有这些答案,知道我有点过分了,给我一些时间来尝试/理解你所有的提示,谢谢!