Toon posts:

[J2ME] verbinding van buitenaf

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik ben zo wat aan het rondzoeken geweest, maar vind niet echt wat ik zoek .. ik wil namelijk een verbinding van buitenaf maken met mijn J2ME device.

Nu, eventjes uitleggen. Ik heb een emedded J2ME device die ergens op een plek staat (in het veld ofzo). Deze kan een HTTP verbinding opzetten en communiceren met mijn website. Bv bestanden uploaden e.d. Maar nu zou ik graag vanop m'n website 'iets' kunnen starten op m'n J2ME device.

Ik zou dus een verbinding moeten maken met het device, maar hoe kan ik dit doen? Via IP address lukt dit niet denk ik, aangezien de verbinding via GPRS gebeurd, en dus het IP address vrij recent kan wijzigen..

Iemand die een tip heeft ofzo?

Alvast heel erg bedankt!!

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je kunt natuurlijk je JME device jouw site laten pollen.

Verwijderd

Topicstarter
Alarmnummer schreef op woensdag 17 januari 2007 @ 13:58:
Je kunt natuurlijk je JME device jouw site laten pollen.
Dit kan ik, maar dan moet ik constant een verbinding laten openstaan en kijken wat de actuel status is? Zal een dure bedoening worden denk ik .. ?

En stel dat ik het IP adres vrijgeef, is er een mogelijkheid om daar iets mee te doen om verbinding met m'n J2ME device te bekomen?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Wat mag de maximale tijd tussen het plaatsen van het request op jouw site, en het verwerken van het request op jouw JME device zijn?

Verwijderd

Topicstarter
Wel, om eerlijk te zijn onmiddellijk .. want de J2ME device is bv een machine die ergens op het veld een defect heeft. En ik moet vanhieruit een aanvraag kunnen doen aan de machine om bv verschillende parameters te versturen naar het internet, zodat ik kan zien wat er fout zit ..

dus eigenlijk moet dit onmiddelijk gebeuren .. :?

  • momania
  • Registratie: Mei 2000
  • Laatst online: 05:21

momania

iPhone 30! Bam!

Is het niet logischer om de J2ME device contact te laten maken als er wat mis is? Die kan immers weten OF er wat mis is. Anders loop je volgens mij continue je J2ME device te pollen of er wat mis is.

Neem je whisky mee, is het te weinig... *zucht*


Verwijderd

Topicstarter
momania schreef op woensdag 17 januari 2007 @ 14:40:
Is het niet logischer om de J2ME device contact te laten maken als er wat mis is? Die kan immers weten OF er wat mis is. Anders loop je volgens mij continue je J2ME device te pollen of er wat mis is.
Het hoeft niet persé te gebeuren als er iets mis is. Stel dat een machine op het veld aan het testdraaien is, en je wil vanop bv het bureau zien wat de actuele status is van, ik zeg nu maar, ingang 5 .. Hoe kan het J2ME device dan weten dat de data van ingang 5 moet doorgestuurd worden?

Ik wil eigenlijk vanop afstand de machine in de hand hebben qua diagnosefuncties e.d.

:D

  • momania
  • Registratie: Mei 2000
  • Laatst online: 05:21

momania

iPhone 30! Bam!

Ok, maar de GPRS verbinding kan toch continue open staan? Zolang er geen data overheen gaat kost dat ook verder niks toch? :)

Dan kan je de J2ME module zich aan laten melden en gewoon op ip-adres verbinding maken oid.

Neem je whisky mee, is het te weinig... *zucht*


  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Over gprs-kosten: Je betaalt bij grps gebruik vaak per MB en niet per minuut. Even pollen kost hooguit een (paar) KB, dus qua kosten zou het nog best mee kunnen vallen. Let wel op dat je het goede abonnement hebt en dus niet per minuut betaalt (zie ook dit draadje).

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


Verwijderd

Topicstarter
momania schreef op woensdag 17 januari 2007 @ 14:53:
Ok, maar de GPRS verbinding kan toch continue open staan? Zolang er geen data overheen gaat kost dat ook verder niks toch? :)

Dan kan je de J2ME module zich aan laten melden en gewoon op ip-adres verbinding maken oid.
Ok bedankt, ik zat met hetzelfde in gedachten ..

het IP adres van de device heb ik al beschikbaar gemaakt op m'n site. Maar via welke weg kan ik dan connecteren met m'n device? via HTTP lukt dit niet veronderstel ik?

Bedankt voor de reacties,
Vriendelijke groeten,
Alexander

  • J2pc
  • Registratie: Oktober 2002
  • Niet online

J2pc

UT Tux Edition

Verwijderd schreef op woensdag 17 januari 2007 @ 15:09:
[...]


Ok bedankt, ik zat met hetzelfde in gedachten ..

het IP adres van de device heb ik al beschikbaar gemaakt op m'n site. Maar via welke weg kan ik dan connecteren met m'n device? via HTTP lukt dit niet veronderstel ik?

Bedankt voor de reacties,
Vriendelijke groeten,
Alexander
Je kan op je device toch gewoon op een poortje luisteren of je wat binnen krijgt?
Als je dat met HTTP wilt doen, moet je zelf weten.

Gewoon poort x uitluisteren, protocolletje met jezelf afspreken (plain text debug commando's?) en gaan met die banaan.
Of denk ik nu te simpel :?

"The computer is incredibly fast, accurate, and stupid. Man is unbelievably slow, inaccurate, and brilliant. The marriage of the two is a challenge and opportunity beyond imagination." © Stuart G. Walesh


Verwijderd

Topicstarter
klinkt allemaal wel heel simpel enzo hoor .. maar ik begrijp 1 kant van de zaak niet. Namelijk hoe ik data kan versturen vanop de website naar bv poort 123 :X

stel op m'n J2ME device laat ik m'n programma runnen die op poort 123 luistert adhv dit:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Create the server listening socket for port 123 
   ServerSocketConnection scn = (ServerSocketConnection)
                            Connector.open("socket://:123");

   // Wait for a connection.
   SocketConnection sc = (SocketConnection) scn.acceptAndOpen();

   // Set application specific hints on the socket.
   sc.setSocketOption(DELAY, 0);
   sc.setSocketOption(LINGER, 0);
   sc.setSocketOption(KEEPALIVE, 0);
   sc.setSocketOption(RCVBUF, 128);
   sc.setSocketOption(SNDBUF, 128);

   // Get the input stream of the connection.
   DataInputStream is = sc.openDataInputStream();

   // Get the output stream of the connection.
   DataOutputStream os = sc.openDataOutputStream();

   // Read the input data.
   String result = is.readUTF();

   // Echo the data back to the sender.
   os.writeUTF(result);

   // Close everything.
   is.close();
   os.close();
   sc.close();
   scn.close();


Zal dit dan constant blijven wachten totdat een externe verbinding wordt gelegd?

en hoe kan ik dit dan aanroepen vanop de website. Ik maak gebruik van php..

Sorry voor m'n (mss domme) vraag..

Alvast bedankt

[ Voor 68% gewijzigd door Verwijderd op 17-01-2007 15:47 ]


Verwijderd

Topicstarter
Na wat experimenteren kan ik dus 'iets' versturen naar het internet via een ServerSocketConnection.

Maar het probleem is dat ik dit moet doen binnen de 20 (ongeveer) seconden, omdat ik dan een timeout krijg, en m'n GPRS verbinding wegvalt.

Hoe kan ik dus zorgen dat ie constant blijft wachten op een externe verbinding.

Java:
1
2
   // Wait for a connection.
   SocketConnection sc = (SocketConnection) scn.acceptAndOpen(); 


dus nu moet binnen de 20 seconden naar m'n browser gaan en dit intypen:

" ip.ip.ip.ip:123 " .. dan krijg ik een bestand die ik kan downloaden met daarin het karakter 'a' die ik heb verstuurd via een outstream van m'n SocketConnection.

Maar hoe zorg ik er dus voor dat ie constant wacht?

Alvast bedankt!

ps: iemand die me wat meer info kan geven omtrent sockets mag me dit gerust geven, google maakt me niet veel wijzer (in combinatie met J2ME .. )

Verwijderd

Topicstarter
ik heb dus wat verder getest, en ik blijk wat vast te zitten in m'n socket connection.

het is mogelijk om vanaf het internet een socket connectie te maken via een PHP pagina. Maar indien ik dit niet doe binnen de 30-40 seconden, dan krijg ik een " network idle timeout " fout in m'n J2Me programma.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
try {
                    ServerSocketConnection server = (ServerSocketConnection) Connector.open("socket://:80");
                    System.out.println(server.getLocalAddress());
                   
                    while (true){
                        // blijft hier wachten, en hangt na 30-40 seconden
                        SocketConnection client = (SocketConnection) server.acceptAndOpen();
                        System.out.println("DO THINGS, F.ex start thread");
                    }
                  }
                  catch (IOException ex) {
                    ex.printStackTrace();
                  }  


Hoe kan ik ervoor zorgen dat ik geen timout meer krijg als ie staat te wachten op een verbinding?

Alvast bedankt

Verwijderd

Topicstarter
klein schopje
Pagina: 1