繁体   English   中英

带有Android客户端的PC服务器套接字

[英]Sockets with Android Client an PC Server

我已经看过其中一些问题,但是似乎没有任何答案可以解决我的问题。 我想从客户端(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);
    }
}

我的清单文件中也有适当的Internet权限:

<uses-permission android:name="android.permission.INTERNET"/>

客户端代码可以作为PC客户端正常工作。 (从PC客户端到PC服务器的工作正常)。

但我无法在Android上使用它!

PC服务器仅显示任何内容。 :(

有人知道我可能做错了吗?

您可能还需要在UI线程上完成所有这些操作。 我认为,如果您这样做并显示应用程序未响应对话框,则android有时会杀死您的应用程序。

另一个发帖人也对您的活动为空,直到出现异常为止都是正确的。 我会解决此问题,然后尝试使用其中的runClient启动一个单独的线程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM