【发布时间】:2023-03-11 22:45:01
【问题描述】:
亲爱的程序员你好,我需要你的帮助。
我做了一个非常非常简单的java socket(客户端-服务器)项目,效果很好。 但是当我使用该客户端代码为 android 制作它时,它不起作用,但我只为 android 制作客户端代码,服务器代码再次使用 Java(也许我也应该在 android 中制作服务器代码?)
服务器(Java)
public class DailyAdviceServer{
public void go() {
try {
ServerSocket serverSock = new ServerSocket(16242, 50);
while (true)
{
Socket sock = serverSock.accept();
PrintWriter writer = new PrintWriter(sock.getOutputStream());
String advice = getAdvice();
writer.println(advice);
writer.close();
System.out.println("smth");
}
} catch (IOException ex)
{
ex.printStackTrace();
}
}
public static void main(String[] args)
{
DailyAdviceServer server = new DailyAdviceServer();
server.go();
}
}
客户端(在 Android 中)
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
TextView tv = (TextView) findViewById(R.id.tv);
Socket s = new Socket("127.0.0.1", 4242);
InputStreamReader streamReader = new InputStreamReader(s.getInputStream());
BufferedReader reader = new BufferedReader(streamReader);
String advice = reader.readLine();
tv.setText("Today you should: " + advice);
reader.close();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
【问题讨论】:
-
看起来你正在连接到 localhost Android 端 - 你的意思是连接到你的服务器的 IP 地址(不是 Android 设备)
-
您也不能在 Android 的主/ui 线程中进行网络连接(
new Socket等)。阅读:developer.android.com/training/basics/network-ops/…
标签: java android sockets client-server