如何将android app作为服务器和python作为客户端

问题描述

首先,感谢所有帮助我的人

说明

所以基本上我正在构建一个Android应用程序,其中我正在使用kotlin并且将充当服务器。而在客户端,我正在使用python。为此目的我正在使用套接字。我必须使用UDP进行通信。我无法连接到我的Android应用程序。在python脚本 sock.connect(('10.0.2.2',6000))中,我也尝试将模拟器ip代替localhost。我只想发送和接收简单的消息。

另一个问题: Python脚本只是超时,甚至没有进入循环。

感谢您的任何帮助

Server.kt

package com.example.soundsource

import android.content.Intent
import android.os.AsyncTask
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import java.io.BufferedInputStream
import java.io.BufferedReader
import java.io.InputStreamReader
import java.io.PrintWriter
import java.lang.Exception
import java.lang.ref.WeakReference
import java.net.ServerSocket
import java.net.Socket


class MainActivity : AppCompatActivity() {

    private lateinit var textView:TextView
    private var message = " "
    private lateinit var client:Socket

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val sendButton:Button = findViewById(R.id.send_button)
        val showLocation = findViewById(R.id.show_location) as? Button
        showLocation?.setOnClickListener {
            val intent = Intent(this,SoundLocation::class.java)
            startActivity(intent)
        }
        textView = findViewById(R.id.text_view)
        sendButton.setOnClickListener{
           t.start()
        }
    }
    private val t = Thread(Runnable {
        val port = 5000
        val server = ServerSocket(port)
        this.message = "Message from client"
        this@MainActivity.runOnUiThread {
          this.textView.text = server.localPort.toString()
        }
        val i =  InputStreamReader(this.client.getInputStream())
        val b =  BufferedReader(i)
        while (true){
            this.client = server.accept()
            message += " "+ this.client.localAddress.toString()+b.readLine()
            this@MainActivity.runOnUiThread{
                this.textView.text = server.localSocketAddress.toString()
            }
            t2.start()
        }
    })

    private val t2 = Thread(Runnable {
        val p = PrintWriter(this.client.getOutputStream())
        p.println("sending message back")
        runOnUiThread {
            this.textView.text = "message sent...."
        }
    })
}

Client.py

import socket


def main():
    sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    sock.connect(('10.0.2.2',5000))
    while True:
        print("you are about to.....")
        data = sock.recv(1024)
        print('you received :',data)
        sock.sendall(bytes("hey kotlin....",'utf-8'))


main()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...