Python(服务器) Android(客户端) Socket编程

2023-12-31

我想制作一个将Python代码与Android Studio连接起来的程序。 但是 android studio 上出现了一个问题,它没有显示任何我想在模拟器屏幕上显示的 UI。我认为这是由于“StrictMode”。但如果我排除 StrictMode 代码。程序已停止。我应该怎么办?这是代码。

  1. Python代码(服务器端)

    import socket
    import random as r
    
    HOST = "localhost"
    PORT = 9999
    
    x = ['10', '20', '30', '40', '50']
    y = ['-10', '-20', '-30','-40', '-50']
    rssi = ['1.5', '2.5', '3.5', '4.5', '5.5']
    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    print('Socket created')
    
    try:
        s.bind((HOST, PORT))
    except socket.error as err:
        print('Bind failed. Error Code : ' .format(err))
    s.listen(10)
    print("Socket Listening")
    conn, addr = s.accept()
    while(True):
        i = r.randint(0, 4)
        conn.send(bytes("x : " + x[i] + " y : "+ y[i] + " rssi : " +                    
    rssi[i] + "\r\n", 'UTF-8'))
    print("Message sent in python")
        data = conn.recv(1024)
        print(data.decode(encoding='UTF-8'))
    
  2. Android Studio(客户端)-AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.yangseungchan.socketwithpython">
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
        <uses-permission android:name="android.permission.INTERNET" />
    </manifest>
    

3.Android Studio(客户端)-MainActivity.java

    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.os.StrictMode;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;

    public class MainActivity extends AppCompatActivity {

        Button button;
        TextView textView;

        private Socket clientSocket;
        private BufferedReader socketIn;
        private PrintWriter socketOut;
        private int port = 9999;
        private final String ip = "222.99.99.14";
        private MyHandler myHandler;
        private MyThread myThread;

        static String text;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);

            try{
                clientSocket = new Socket(ip, port);
                socketIn = new BufferedReader(new         InputStreamReader(clientSocket.getInputStream()));
                socketOut = new PrintWriter(clientSocket.getOutputStream(), true);
            }catch(Exception e){
                e.printStackTrace();
            }

    myHandler = new MyHandler();
    myThread = new MyThread();
    myThread.start();

    button = (Button)findViewById(R.id.button);
    textView = (TextView)findViewById(R.id.textView);


    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            /*socketPython.Datastack.printStack();
            textView.setText((String)SocketwithPython.Datastack.Peek(0));*/
            socketOut.println(123);
        }
    });
}

class MyThread extends Thread{
    @Override
    public void run() {
        while(true){
            try{
                System.out.println("Trying to read...");
                String data = socketIn.readLine(); 
                Message msg = myHandler.obtainMessage(); 
                msg.obj = data;
                myHandler.sendMessage(msg);
                System.out.println(data);
                socketOut.print("Try"+"\r\n");
                socketOut.flush();
                System.out.println("Message sent");
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
    }
}

class MyHandler extends Handler {
    public void handleMessage(Message msg){
        textView.setText(msg.obj.toString());
    }
}

}


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python(服务器) Android(客户端) Socket编程 的相关文章

随机推荐

  • 识别一般保护故障 (x86) 上的故障地址

    我正在尝试为 x86 上的一般保护错误 GP 13 编写 ISR 我无法从 INTEL 文档中找出如何找出导致异常的错误地址 我知道对于页面错误异常 GP 14 cr2 寄存器保存错误地址 任何帮助表示赞赏 我在这里所做的所有参考资料均来自
  • 客户端和服务器需要使用相同的端口进行连接吗?

    我有一个使用java的服务器客户端程序 我尝试创建一个ServerSocket有端口和客户端Socket具有不同的端口 并且它们无法相互连接 客户端抛出ConnectException 当我将 Client 上的套接字更改为与 Server
  • PHP 中的重定向/返回检查

    我有一个用 PHP 运行的网站 并且有一个页面 例如 confirm php 我只想允许登陆的用户确认 php 来自我指定的页面 例如 register php 我可以知道是否可以实现这一点 问候 安迪 你不能依赖HTTP 引用因为用户可以
  • 如何检测 Xamarin 表单 TabbedPage 中是否触摸了选项卡

    如何检测 Xamarin 表单 TabbedPage 中是否触摸了选项卡 这与我想出如何检测的页面更改检测不同 原因如下 我正在尝试解决一个相当丑陋的选项卡式页面溢出用户界面 标签栏右侧显示的丑陋的滚动条 每当有 gt 5 个选项卡时 因此
  • Apps 脚本 - 将 JSON 正确导出到 Google Sheet

    我对 Apps Script Javascript 还很初学者 我有一些使用 API 导出的 JSON 数据 以下是我这样做时得到的结果 console log jsonData 我试图 将此 JSON 数据转换为 CSV 将数据放入活动电
  • 杀死 Mac OSX 端口 80 上未知的自重启服务器

    我有一台服务器在端口 80 上运行 但我不知道它是什么或它来自哪里 当我跑步时 sudo lsof i 80 grep LISTEN I get httpd 80 root 5u IPv6 0x91f5a9de62859cfd 0t0 TC
  • 在 WHERE 子句中使用 CASE

    我的查询的简化版本 SELECT FROM logs WHERE pw correct AND CASE WHEN id lt 800 THEN success 1 ELSE END AND YEAR timestamp 2011 这是行不
  • NSDateFormatter 用于 BST 而不是 GMT+1

    我想在时间轴上显示以下字符串 格林威治标准时间 英国夏令时 这是代码 NSDateFormatter dateformatter NSDateFormatter alloc init dateformatter setDateFormat
  • 存储在单个向量中的三角形邻接矩阵的正向和逆向索引

    我有一张带有点的地图 我想知道每个点之间的距离 这可能称为无向循环图 由于点很多 我的存储空间有限 所以阵列需要很密集 对于 4 个城市 n 4 我需要 6 个索引来映射这 4 个城市 Index City1 lt gt City2 Ind
  • 推送到接口类型数组

    我有一个名为 TestEvent 类型的 rows 的数组 并且想要推送到该数组 我无法输出我推送的对象 它仅显示未定义 正如您所看到的 this rows 显示了数组 但是当我尝试输出特定数组 this rows 0 时 我得到了未定义
  • 有没有办法测试jqGrid是否有数据?

    我正在尝试启用和禁用 jqgrid 上的自定义按钮 但仅当网格为空时才启用该按钮 然后在网格不为空时禁用该按钮 有没有办法测试网格是否有数据 Thanks 您可以测试一下网格中有多少条记录 如果没有行 则网格为空 jQuery grid j
  • 修改我的.jar程序的任务栏图标

    我试图更改每次运行 jar 程序时出现在任务栏中的默认 java 图标 我设法用frame setIconImage img 更改它但这使得图标太小 我希望它与其他程序图标一样大并且具有高质量 我有什么办法可以做到这一点吗 谢谢 由于您只提
  • Android:使用“连续”自动对焦录制视频

    我从事视频录制工作 除了要求持续专注之外 一切正常 这就是我所做的 在surfaceCreated和surfaceChanged中都尝试过但没有成功 camera Camera open camera setPreviewDisplay h
  • JavaFX WebView 中的缓存

    我们正在开发一个JavaFX 2 x 应用程序 它需要提供一些GIS 支持 我们得出的结论是 通过嵌入式 WebView 使用 GoogleMaps 是最快的选择 问题是每次我们的应用程序启动时 都会下载相应的 JavaScript 库 这
  • 为什么 Scripts.Render 会调用 JsMinify.Process?

    我介绍了我的ASP NET MVC应用程序 我看到一个奇怪的函数调用 你可以在图片上看到它 总是当 mvc 渲染布局时我们调用system web optimization scripts render哪个调用JsMinify Proces
  • SQL Server 用户实例中的哪些内容导致它们无法在非 Express Edition 中使用?

    开发了几年 或更长时间 后 我仍然不明白 What makes User Instances impossible incompatible with Developer or any other edition of SQL Server
  • 读取中间件.Net Core中的Controller和Action名称

    我正在我的项目中编写一个中间件类 以便将请求数据记录到我们的数据库中 我没有看到任何简单的方法来获取控制器名称和操作 有机会在核心中轻松做到这一点吗 我有这样的事情 public class RequestResponseLoggingMi
  • 实例构造函数设置静态成员,线程安全吗?

    我正在重构一些代码 并且想知道如何使用lock在实例构造函数中 public class MyClass private static Int32 counter 0 private Int32 myCount public MyClass
  • 付款交易发生时禁用后退按钮

    我有一个 XHTML 页面 在信用卡付款成功后调用 但当用户点击后退按钮时 他会再次充电 我该如何处理这个问题 方法是禁用后退按钮或在他按后退空格或后退按钮时使他的会话无效 我正在使用 Spring3 JSF 但这个问题与此参考无关 因为这
  • Python(服务器) Android(客户端) Socket编程

    我想制作一个将Python代码与Android Studio连接起来的程序 但是 android studio 上出现了一个问题 它没有显示任何我想在模拟器屏幕上显示的 UI 我认为这是由于 StrictMode 但如果我排除 Strict