我已经看过其中的一些问题,但没有一个答案似乎可以解决我的问题。 我想在我的客户端(Android手机,我实际上有一个物理设备)的服务器(PC)上显示一条消息。 我有一个非常简单的PC服务器:
public void run(int port) throws Exception
{
ServerSocket ss = new ServerSocket(port);
Socket sock = ss.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(sock.getInputStream()));
System.out.println(reader.readLine());
}
(在我的主要空白处):
Server s = new Server();
s.run(4444);
一个非常简单的Android客户端:
package com.j03.client;
import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;
import java.io.*;
import java.net.*;
public class MainActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
try
{
runClient("10.0.2.2", 4444, "hey");
}
catch (Exception e)
{
TextView t = new TextView(this);
t.setText(e.getMessage());
setContentView(t);
}
}
public static void runClient(String ip, int port, String message) throws Exception
{
Socket sock = new Socket(ip, port);
PrintStream ps = new PrintStream(sock.getOutputStream());
ps.println(message);
}
}
我的清单文件中也有正确的互联网权限:
<uses-permission android:name="android.permission.INTERNET"/>
客户端代码可以正常用作PC客户端。 (PC客户端到PC服务器工作正常)。
但我不能让它在Android上运行!
PC服务器根本不显示任何内容。 :(
有谁知道我做错了什么?
答案 0 :(得分:0)
您也可能在UI线程上执行此操作。我认为如果你这样做并且显示应用程序没有响应对话框,android有时会杀死你的应用程序。
另一张海报也是关于你的活动是空的,直到发生异常。我会解决这个问题并尝试在其中使用runClient创建一个单独的线程