Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 Cumparat/Locuit in apartament si ...

Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...
 Kanal D va difuza serialul “...

Upgrade xiaomi mi11

securitate - acum se dau drept - ...

Farmacia Dr Max - Pareri / Sugest...
 

Pot transmite dar nu receptiona date de la un Python-server cu Android

- - - - -
  • Please log in to reply
3 replies to this topic

#1
ursudepadure

ursudepadure

    Junior Member

  • Grup: Members
  • Posts: 232
  • Înscris: 28.04.2012
Vreau sa controlez un Raspberry pi prin telefon/tableta Android. Am reusit sa fac transmisia de date, pot sa aprind leduri, etc. cu click pe butoane sau alte evenimente din Android dar nu reusesc sa transmit date de la serverul scris in Python pentru Android. Ca sa vad daca am inteles, am scris cat se poate de minimal un server si un client in Python si funcitoneaza ca un program de chat:
AICI E SERVERUL:
import socket		
s = socket.socket()	  
#host = socket.gethostname()
host =''
port = 7800			
s.bind((host, port))  
s.listen(5)
print 'acesta e numele hostului:'  , socket.gethostname()
print 'urmeaza datele referitoare la socket doar pentru testare: '
print(s.getsockname()[0])
print(s.getsockname()[1])
print 'Asteptam clienti! Ia conexiune de aici neamule!'
c, addr = s.accept()
print '--------------------Avem clienti! --------------------------------'
print 'Avem O conexiune cu client de la adresa si portul:', addr
while True:
	print 'Clientul zice ca:'
	buf = c.recv(1024)
	print 'am trimis textul ', buf
	q = raw_input("Scrie catre client : >>>  ")
	c.send(q)
	print '-----------------mesaj transmis la client!------------------'
AICI E CLIENTUL:
import socket
import sys
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('192.168.1.92', 7800 )) #IP is the server IP
#trimit un prim mesaj scris direct dupa linia de comanda dupa ce am tastat python client.py mesjaj de salut
for args in sys.argv:
	if args == "":
		args = 'no args'
	else:
		s.send(args + ' ')
print 'Incepe dialogul:'
while True:
   print ' Serverul zice: '
   data = s.recv(1024)
   print data
   q = raw_input(" Scrie ceva la server: >>> ")
   s.send(q)
   print '-----------------mesaj transmis la server------------------'
////////////////////////////////////
Acum pentru a trimite date catre un sever Python din Rasbery de pe o tableta Android am scris un program modularizat, cu o clasa separata de MainActivity. Pentru a simplifica lucrurile, prezint aici incercarea de a receptiona mesajele de la serverul Python in MainActivity ca sa nu complic lucurile. De conectat se conecteaza dar nu apare nimic intr-un TextView (un fel de "label" in alte limbaje) care in codul meu se numeste "mesaj" si corespunde unui TextView cu ID textView in layout.
////////////////// ACESTA E CODUL SCRIS PENTRU ANDROID ///////////////////////////////
public class MainActivity extends Activity {
	private Socket socket;
	private static final int SERVERPORT = 7800;
	private static final String SERVER_IP = "192.168.1.92";
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		new Thread(new ClientThread()).start();
	}
	class ClientThread implements Runnable
	{
		@Override
		public void run() {
			try {
				InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
				socket = new Socket(serverAddr, SERVERPORT);
			} catch (UnknownHostException e1) {
				e1.printStackTrace();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
			try {											   // SE CONECTEAZA DAR URMEAZA SA CITEASCA DE LA SERVER
				InputStream in = socket.getInputStream();								 // CREEAZA UN STREAM CARE CITESTE DIN SOCKET
				TextView message = (TextView) findViewById(R.id.textView);   // ASOCIAZA VARIABILA message CU textView DIN LAYOUT
				BufferedReader br = new BufferedReader(new InputStreamReader(in));  // CREEAZA UN BUFFER PENTRU A PUTEA CITI
				String line;
				while ((line = br.readLine ()) != null) {										 // CITESTE LINIILE ATATA TIMP CAT EXISTA LINII
					message.setText(br.readLine());										   // AFISEAZA TEXTUL IN textView, PUTEAM FOLOSI append
				}
			   in.close();
			} catch (UnknownHostException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}
//////////////////////////
Ca sa vad daca merge am modificat serverul si am dezactivat liniile cu mesaje primite de la client, sa transmit doar date imediat dupa conectare:
MODIFICAREA FACUTA IN SEVERUL PYTHON:
while True:
	#print 'Clientul zice ca:'												  AM DEZACTIVAT CE VINE DE LA CLIENT, CA MA INTERSEAZA
	#buf = c.recv(1024)														SA MA FOCUSEZ ASUPRA PROBLEMEI DE RECEPTIONARE
	#print 'am trimis textul ', buf
	q = raw_input("Scrie catre client : >>>  ")
	c.send(q)
	print '-----------------mesaj transmis la client!------------------'

Ei bine, ma asteptam sa vad ceva in casuta de text de tip TextView. Nu se intampla insa nimic desi serverul imi arata ca se conecteaza.

Edited by MarianG, 01 December 2020 - 12:26.


#2
ursudepadure

ursudepadure

    Junior Member

  • Grup: Members
  • Posts: 232
  • Înscris: 28.04.2012
Oare am postat gresit aici? Dar nu stiu exact unde as putea posta asta? E vorba si de Python (limbaj de script) si de Java pentru SDK Android pentru care nu exista un forum.

#3
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Aria asta e pentru cerut/promovat programe.

Mai jos gasesti o arie imensa pt probleme de programare

#4
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,236
  • Înscris: 24.02.2007
Wireshark iti arata ce se transfera pe retea, pentru a te ajuta sa diagnostichezi problema.

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate