【发布时间】:2015-07-11 14:31:37
【问题描述】:
我正在使用标准客户端代码向我的服务器发送一个字符串。当我从 eclipse 运行一个 java 项目时它工作得很好,但是当我通过我的 android 应用程序上的一个按钮运行相同的代码时它不起作用。调试后,我的尝试代码崩溃了
Socket clientSocket = new Socket("192.168.1.91", 6789);
请帮帮我。
public void button2OnClick(View k){
//Testing Server Connection
try{
String sentence;
String modifiedSentence;
BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in));
Socket clientSocket = new Socket("192.168.1.91", 6789);
Button button=(Button) k;
((Button) k).setText("Done");
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
sentence = "connection with android successful";
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
clientSocket.close();
}
catch(Exception IO){
}
}
【问题讨论】:
-
也许你需要添加权限。 [看到这个问题][1] [1]:stackoverflow.com/questions/4074808/…
-
在 Android 中,您应该在 asynctask 中而不是在主线程中建立 Internet 连接。见developer.android.com/training/basics/network-ops/…
-
它不会崩溃。它抛出一个异常。在您的问题中捕捉、打印并张贴在这里。
-
关键是它在响应UI事件运行时崩溃,即在不允许联网的主线程上。