我对 android 和 java 编程很陌生,我需要你的帮助。我想在我的 PC (Windows 7) 上创建一个 Android 客户端和一个服务器。我用 putty(一个模仿客户端的程序(没有编程错误^^))检查了我的服务器是否编程没有错误。因此我认识到我的服务器编程正确。
在这里你可以看到我运行良好的服务器:
public class MyServer {
public static void main (String[] args) throws IOException {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(4449);
System.out.println("Listening on port: 4449");
} catch (IOException e){
System.err.println("Could not listen on port 4449.");
System.exit(1);
}
Socket clientSocket = null;
try {
clientSocket = serverSocket.accept();
System.out.println("Got connection.");
} catch (IOException e) {
System.err.println("Accept failed: 4449.");
System.exit(1);
}
BufferedReader in = null;
PrintWriter out = null;
try {
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
out = new PrintWriter(clientSocket.getOutputStream(), true);
} catch (IOException e) {
System.err.println("Read failed");
e.printStackTrace();
}
try {
System.out.println("message: " + in.readLine());
out.println("hab was bekommen!");
} catch (IOException e) {
System.err.println("Can't get a message from Client.");
e.printStackTrace();
}
}
}
我还尝试为此服务器创建一个 Android 客户端,但我没有管理它。
这是我的主要活动:
public class AndroidClient extends Activity {
EditText textOut;
TextView textIn;
TextView problems;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_android_client);
textOut = (EditText)findViewById(R.id.textout);
Button buttonSend = (Button)findViewById(R.id.send);
textIn = (TextView)findViewById(R.id.textin);
problems = (TextView)findViewById(R.id.problems);
buttonSend.setOnClickListener(buttonSendOnClickListener);
}
Button.OnClickListener buttonSendOnClickListener
= new Button.OnClickListener() {
@Override
public void onClick(View arg0) {
//TODO Auto-generated method stub
Socket client = null;
BufferedReader in = null;
PrintWriter out = null;
try {
client = new Socket("192.168.2.107", 4449);
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
} catch (UnknownHostException e) {
problems.setText("Unknown host: 192.168.2.107");
} catch (IOException e) {
// System.out.println("No Input/Output.");
problems.setText("No Input/Output.");
}
try {
out.println("Hallo.");
textIn.setText(in.readLine());
} catch (IOException e) {
problems.setText("Can't send/ get message.");
}
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_android_client, menu);
return true;
}
}
到现在为止还挺好。当我在我的 android 智能手机上启动我的应用程序时,应用程序启动没有任何问题。然后我在我的 EditText 字段“textOut”中输入一些内容并按下“发送”按钮。然后我的屏幕变黑,应用程序自行关闭。我还在 AndroidManifest.xml 中粘贴了进入互联网和使用访问 Wifi 的权限。
我希望有人可以帮助我,因为我在这个问题上工作了 2 天,还没有找到任何解决方案。我主要使用这方面(http://android-er.blogspot.de/2011/01/simple-communication-using.html),当然还有其他方面,但我得到了大部分信息。此外,我的源代码中没有显示错误。
亲切的问候,
卢卡斯5060
编辑:这是我的 LogCat:
12-28 20:21:55.929: I/dalvikvm(698): threadid=3: 对信号 3 做出反应 12-28 20:21:56.039: I/dalvikvm(698): 将堆栈跟踪写入 '/data/anr/ traces.txt' 12-28 20:21:56.259: I/dalvikvm(698): threadid=3: 对信号 3 做出反应 12-28 20:21:56.299: I/dalvikvm(698): 将堆栈跟踪写入 '/ data/anr/traces.txt' 12-28 20:21:56.741: D/gralloc_goldfish(698): 没有检测到 GPU 仿真的仿真器。12-28 20:21:56.771: I/dalvikvm(698): threadid=3: 对信号 3 做出反应 12-28 20:21:56.789: I/dalvikvm(698): 将堆栈跟踪写入 '/data/anr/ traces.txt' 12-28 20:23:58.430: D/AndroidRuntime(698): 关闭 VM 12-28 20:23:58.430: W/dalvikvm(698): threadid=1: 线程退出未捕获异常(组= 0x409c01f8) 12-28 20:23:58.470: E/AndroidRuntime(698): 致命异常: main 12-28 20:23:58.470: E/AndroidRuntime(698): android.os。E/AndroidRuntime(698): at java.lang.reflect.Method.invokeNative(Native Method) 12-28 20:23:58.470: E/AndroidRuntime(698): at java.lang.reflect.Method.invoke(Method. java:511) 12-28 20:23:58.470: E/AndroidRuntime(698): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 12-28 20:23:58.470: E/AndroidRuntime(698): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 12-28 20:23:58.470: E/AndroidRuntime(698): 在 dalvik.system.NativeStart.main (本机方法)12-28 20:23:59.070:I/dalvikvm(698):threadid = 3:对信号3做出反应12-28 20:23:59.100:I/dalvikvm(698):将堆栈跟踪写入'/ data/anr/traces.txt' 12-28 20:24:02.420: I/Process(698): 发送信号。PID:698 SIG:9 在 java.lang.reflect.Method.invoke(Method.java:511) 12-28 20:23:58.470: E/AndroidRuntime(698): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit. java:784) 12-28 20:23:58.470: E/AndroidRuntime(698): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 12-28 20:23:58.470: E/ AndroidRuntime(698): 在 dalvik.system.NativeStart.main(Native Method) 12-28 20:23:59.070: I/dalvikvm(698): threadid=3: 对信号 3 作出反应 12-28 20:23:59.100: I / dalvikvm(698):将堆栈跟踪写入'/data/anr/traces.txt' 12-28 20:24:02.420:I / Process(698):发送信号。PID:698 SIG:9 在 java.lang.reflect.Method.invoke(Method.java:511) 12-28 20:23:58.470: E/AndroidRuntime(698): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit. java:784) 12-28 20:23:58.470: E/AndroidRuntime(698): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 12-28 20:23:58.470: E/ AndroidRuntime(698): 在 dalvik.system.NativeStart.main(Native Method) 12-28 20:23:59.070: I/dalvikvm(698): threadid=3: 对信号 3 作出反应 12-28 20:23:59.100: I / dalvikvm(698):将堆栈跟踪写入'/data/anr/traces.txt' 12-28 20:24:02.420:I / Process(698):发送信号。PID:698 SIG:9 ZygoteInit.main(ZygoteInit.java:551) 12-28 20:23:58.470: E/AndroidRuntime(698): at dalvik.system.NativeStart.main(Native Method) 12-28 20:23:59.070: I/dalvikvm (698): threadid=3: 对信号 3 做出反应 12-28 20:23:59.100: I/dalvikvm(698): 将堆栈跟踪写入 '/data/anr/traces.txt' 12-28 20:24:02.420 : I/Process(698): 发送信号。PID:698 SIG:9 ZygoteInit.main(ZygoteInit.java:551) 12-28 20:23:58.470: E/AndroidRuntime(698): at dalvik.system.NativeStart.main(Native Method) 12-28 20:23:59.070: I/dalvikvm (698): threadid=3: 对信号 3 做出反应 12-28 20:23:59.100: I/dalvikvm(698): 将堆栈跟踪写入 '/data/anr/traces.txt' 12-28 20:24:02.420 : I/Process(698): 发送信号。PID:698 SIG:9