Python-сервер Как отправить данные на Android-клиент и отобразить сообщение в виде текста

Python-сервер Как отправить данные клиенту Android и отобразить сообщение в текстовом представлении Я в настоящее время испытываю трудности с отправкой данных с сервера и отображать сообщение в текстовом представлении в приложении при нажатии кнопки. мне очень нужна ваша помощь, ребята, спасибо

вот мой код сервера в Python

import apptopi
from socket import *
from time import ctime
from nanpy import (ArduinoApi, SerialManager)

apptopi.setup()

connection = SerialManager()
a = ArduinoApi(connection = connection)

ctrCmd = ['Up','Down','Left','Right','Stop','Connect','Balls']

HOST = ''
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST,PORT)

tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(0)

while True:
    print 'Waiting for connection'
    tcpCliSock,addr = tcpSerSock.accept()
    print '...connected from :', addr
    try:
            while True:
                    data = ''
                    data = tcpCliSock.recv(BUFSIZE)
                    if not data:
                            break
                    if data == ctrCmd[0]:
                            apptopi.forw()
                            print 'forward'
                    if data == ctrCmd[1]:
                            apptopi.back()
                            print 'backward'
                    if data == ctrCmd[2]:
                            apptopi.left()
                            print 'leftturn'
                    if data == ctrCmd[3]:
                            apptopi.right()
                            print 'rightturn'
                    if data == ctrCmd[4]:
                            apptopi.stp()
                            print 'stop'
                    if data == ctrCmd[5]:
                            print 'Received data from client: ' + str(data)
                            while True:
                                    add = 0
                                    add +=1
                                    tcpSerSock.send(str.encode(add))  //this 
              is the data that i want to send when the button is pressed in 
              the android app
                            break

    except KeyboardInterrupt:
            apptopi.close()
            GPIO.cleanup()
tcpSerSock.close();

вот мой код Android

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


    mEditTextSendMessage = (EditText) findViewById(R.id.edt_send_message);
    mTextViewReplyFromServer = (TextView) 
    findViewById(R.id.tv_reply_from_server);
    btn_collect = (Button) findViewById(R.id.btn_send);


btn_collect.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            CMD = "Balls";
            Socket_AsyncTask cmd_increase_servo = new Socket_AsyncTask();
            cmd_increase_servo.execute();
            sendMessage(mEditTextSendMessage.getText().toString());

        }
    });
}


private void sendMessage(final String message) {

    final Handler handler = new Handler();
    Thread thread = new Thread(new Runnable() {

        String stringData;

        @Override
        public void run() {

            DatagramSocket ds = null;
            try {
                ds = new DatagramSocket();
                // IP Address below is the IP address of that Device where 
                        server socket is opened.
                InetAddress serverAddr = 
                      InetAddress.getByName("192.168.1.11");
                DatagramPacket dp;
                dp = new DatagramPacket(message.getBytes(), 
                            message.length(), serverAddr, 21567);
                ds.send(dp);

                byte[] lMsg = new byte[1000];
                dp = new DatagramPacket(lMsg, lMsg.length);
                ds.receive(dp);
                stringData = new String(lMsg, 0, dp.getLength());

            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (ds != null) {
                    ds.close();
                }
            }

            handler.post(new Runnable() {
                @Override
                public void run() {

                    String s = 
                   mTextViewReplyFromServer.getText().toString();
                    if (stringData.trim().length() != 0)
                        mTextViewReplyFromServer.setText(s + stringData);

                }
            });
        }
    });

    thread.start();
}

0 ответов

Другие вопросы по тегам