PC 和 Android 设备之间的客户端 - 服务器连接问题

安德鲁

我正在尝试将我的 android 设备连接到驻留在我的 PC 上的服务器

这里正在尝试创建一个套接字,但是这个示例总是抛出异常

public void ref(View view) throws Exception
    {
        Socket s=new Socket("178.67.235.32",9876);
        try
        {
            BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
            PrintWriter out=new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
            out.print("123");
            String str=in.readLine();
        }
        catch (Exception e)
        {
            Log.e("GG",e.toString());
        }
    finally
    {
        s.close();
    }

这是我正在运行的服务器

public class Server

{
 public static final ArrayList<InetAddress> users = new ArrayList<InetAddress>();
    static final int PORT = 9876;

    public static void main(String[] args) throws IOException
    {
        int i = 0;
        ServerSocket s = new ServerSocket(PORT);
        System.out.println("ServerStart");
        try
        {
            while (true)
            {
                Socket socket = s.accept();
                users.add(socket.getInetAddress());
                try
                {
                    System.out.println("yea");
                    new OneUserThread(socket, i);
                    i++;
                } catch (Exception e)
                {
                    System.out.println(e);
                }
            }
        } catch (Exception e)
        {
            System.out.println(e);
        } finally
        {
            s.close();
        }
    }
}

结果,我期待显示有关连接的消息,但我在 logcat 中有异常

我的 logcat:32 行 - 它正在创建 Socket

12-03 14:37:58.574 5574-5574/ru.scapegoats.checkers E/AndroidRuntime: FATAL EXCEPTION: main
                                                                      Process: ru.scapegoats.checkers, PID: 5574
                                                                      java.lang.IllegalStateException: Could not execute method for android:onClick
                                                                          at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                                                                          at android.view.View.performClick(View.java:4463)
                                                                          at android.view.View$PerformClick.run(View.java:18770)
                                                                          at android.os.Handler.handleCallback(Handler.java:808)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:103)
                                                                          at android.os.Looper.loop(Looper.java:193)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5333)
                                                                          at java.lang.reflect.Method.invokeNative(Native Method)
                                                                          at java.lang.reflect.Method.invoke(Method.java:515)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
                                                                          at dalvik.system.NativeStart.main(Native Method)
                                                                       Caused by: java.lang.reflect.InvocationTargetException
                                                                          at java.lang.reflect.Method.invokeNative(Native Method)
                                                                          at java.lang.reflect.Method.invoke(Method.java:515)
                                                                          at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                                                                          at android.view.View.performClick(View.java:4463) 
                                                                          at android.view.View$PerformClick.run(View.java:18770) 
                                                                          at android.os.Handler.handleCallback(Handler.java:808) 
                                                                          at android.os.Handler.dispatchMessage(Handler.java:103) 
                                                                          at android.os.Looper.loop(Looper.java:193) 
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5333) 
                                                                          at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                          at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829) 
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645) 
                                                                          at dalvik.system.NativeStart.main(Native Method) 
                                                                       Caused by: android.os.NetworkOnMainThreadException
                                                                          at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1156)
                                                                          at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
                                                                          at libcore.io.IoBridge.connectErrno(IoBridge.java:159)
                                                                          at libcore.io.IoBridge.connect(IoBridge.java:112)
                                                                          at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
                                                                          at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
                                                                          at java.net.Socket.startupSocket(Socket.java:579)
                                                                          at java.net.Socket.tryAllAddresses(Socket.java:131)
                                                                          at java.net.Socket.<init>(Socket.java:181)
                                                                          at java.net.Socket.<init>(Socket.java:153)
                                                                          at ru.scapegoats.checkers.InternetMenu.ref(InternetMenu.java:32)
                                                                          at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                          at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                          at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                                                                          at android.view.View.performClick(View.java:4463) 
                                                                          at android.view.View$PerformClick.run(View.java:18770) 
                                                                          at android.os.Handler.handleCallback(Handler.java:808) 
                                                                          at android.os.Handler.dispatchMessage(Handler.java:103) 
                                                                          at android.os.Looper.loop(Looper.java:193) 
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5333) 
                                                                          at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                          at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829) 
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645) 
                                                                          at dalvik.system.NativeStart.main(Native Method) 
12-03 14:38:00.252 950-1170/? E/InputDispatcher: channel '42c4e900 ru.scapegoats.checkers/ru.scapegoats.checkers.InternetMenu (server)' ~ Channel is unrecoverably broken and will be disposed!
motis10

您可以在日志中看到您的异常是NetworkOnMainThreadException. 这意味着您正在尝试在主线程中打开套接字。您需要将客户端更改为:

public void ref(View view) throws Exception {
    HandlerThread handlerThread = new HandlerThread("threadName");
    handlerThread.start();
    Handler mainHandler = new Handler(handlerThread.getLooper());

    Runnable myRunnable = new Runnable() {
        @Override
        public void run() {
            Socket s = new Socket("178.67.235.32", 9876);
            try {
                BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
                PrintWriter out = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
                out.print("123");
                String str = in.readLine();
            } catch (Exception e) {
                Log.e("GG", e.toString());
            } finally {
                s.close();
            }
        }
    };
    mainHandler.post(myRunnable);
}

此外,请确保您在清单中拥有权限:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在Android手机和PC之间建立客户端服务器蓝牙串行连接

来自分类Dev

Android和PC之间通过WIFI的客户端服务器

来自分类Dev

无法在Java服务器和Android客户端之间建立连接

来自分类Dev

Android服务器和客户端连接

来自分类Dev

Android客户端PC服务器java套接字连接失败

来自分类Dev

随机时间过后,Android客户端和Windows服务器之间的TCP连接断开

来自分类Dev

Android-在服务器和客户端之间发送数据

来自分类Dev

如何在Android上的服务器和客户端之间保持数据同步?

来自分类Dev

Android中的蓝牙服务器和客户端

来自分类Dev

C#服务器和Android客户端

来自分类Dev

Android中的蓝牙服务器和客户端

来自分类Dev

网络问题-Android设备上的客户端未连接到笔记本电脑上的服务器

来自分类Dev

在WEB API服务器和Android客户端应用程序之间共享模型的最佳实践是什么

来自分类Dev

服务器和客户端之间的区别

来自分类Dev

服务器和客户端之间的实时通信

来自分类Dev

服务器和客户端之间的密钥交换

来自分类Dev

服务器和客户端之间的持续通信

来自分类Dev

javascript客户端和netty服务器之间的安全websocket连接

来自分类Dev

设备和PC之间的Windows-Android USB连接断开

来自分类Dev

Android蓝牙Gatt服务器/客户端同时连接的问题

来自分类Dev

套接字Python服务器和Java-Android Studio中的客户端,其中Java无法连接到python服务器

来自分类Dev

如何从服务器端php和mysql管理各种客户端应用程序(android / iphone)之间的会话令牌?

来自分类Dev

Android客户端-服务器应用程序和Web服务

来自分类Dev

通过蜂窝网络进行对等 2 对等或客户端/服务器连接以连接 2 个 android 设备

来自分类Dev

GWT-(客户端->服务器->客户端)和(服务器->客户端)通信之间的区别

来自分类Dev

多少个用户可以在带套接字的android客户端,pc java服务器上处理?

来自分类Dev

使用Python服务器和Android客户端进行套接字编程

来自分类Dev

Android和Java蓝牙客户端服务器应用程序

来自分类Dev

使用Python服务器和Android客户端进行套接字编程

Related 相关文章

  1. 1

    无法在Android手机和PC之间建立客户端服务器蓝牙串行连接

  2. 2

    Android和PC之间通过WIFI的客户端服务器

  3. 3

    无法在Java服务器和Android客户端之间建立连接

  4. 4

    Android服务器和客户端连接

  5. 5

    Android客户端PC服务器java套接字连接失败

  6. 6

    随机时间过后,Android客户端和Windows服务器之间的TCP连接断开

  7. 7

    Android-在服务器和客户端之间发送数据

  8. 8

    如何在Android上的服务器和客户端之间保持数据同步?

  9. 9

    Android中的蓝牙服务器和客户端

  10. 10

    C#服务器和Android客户端

  11. 11

    Android中的蓝牙服务器和客户端

  12. 12

    网络问题-Android设备上的客户端未连接到笔记本电脑上的服务器

  13. 13

    在WEB API服务器和Android客户端应用程序之间共享模型的最佳实践是什么

  14. 14

    服务器和客户端之间的区别

  15. 15

    服务器和客户端之间的实时通信

  16. 16

    服务器和客户端之间的密钥交换

  17. 17

    服务器和客户端之间的持续通信

  18. 18

    javascript客户端和netty服务器之间的安全websocket连接

  19. 19

    设备和PC之间的Windows-Android USB连接断开

  20. 20

    Android蓝牙Gatt服务器/客户端同时连接的问题

  21. 21

    套接字Python服务器和Java-Android Studio中的客户端,其中Java无法连接到python服务器

  22. 22

    如何从服务器端php和mysql管理各种客户端应用程序(android / iphone)之间的会话令牌?

  23. 23

    Android客户端-服务器应用程序和Web服务

  24. 24

    通过蜂窝网络进行对等 2 对等或客户端/服务器连接以连接 2 个 android 设备

  25. 25

    GWT-(客户端->服务器->客户端)和(服务器->客户端)通信之间的区别

  26. 26

    多少个用户可以在带套接字的android客户端,pc java服务器上处理?

  27. 27

    使用Python服务器和Android客户端进行套接字编程

  28. 28

    Android和Java蓝牙客户端服务器应用程序

  29. 29

    使用Python服务器和Android客户端进行套接字编程

热门标签

归档