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();
}