Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: UDP-paketin vastaanotto-ongelmia

Macro [12.07.2013 11:53:59]

#

Morjens,

Android-puhelimelleni olen tehnyt ohjelman joka lähettää verkon yli Arduinolle UDP-paketin johon Arduino vastaa. Kun molemmat laitteet ovat sisäverkossa, puhelin vastaanottaa Arduinon paketin. Jos yhdistän puhelimella internetin kautta Arduinoon (julkinen IP ja porttiohjaus), puhelin lähettää kyllä paketin mutta ei vastaanota vastausta. Mikäköhän voisi olla?

Puhelimelle olen tehnyt tälläisen pätkän:

byte[] data = ("dataa").getBytes();

try {
	DatagramPacket packet = new DatagramPacket(data, data.length, arduinoAddress, arduinoPort);

	socket.send(packet);

	byte[] receiveData = new byte[1];
	DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
	socket.receive(receivePacket);

	System.out.println(new String(receivePacket.getData()));
} catch(InterruptedIOException e) {
	e.printStackTrace();

	return 2;
} catch(IOException e) {
	e.printStackTrace();
}

Arduinolta taas löytyy tälläinen

void loop() {
	int packetSize = UDP.parsePacket();

	if(packetSize) {
		UDP.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE);
		String data = String(packetBuffer);

		for(int i = 0; i < UDP_TX_PACKET_MAX_SIZE; i++) {
		  packetBuffer[i] = 0;
		}

		Serial.println(data);

		UDP.beginPacket(UDP.remoteIP(), UDP.remotePort());
		UDP.print("1");
		UDP.endPacket();

		...

Katselin netistä, eikä pitäisi operaattorien porttirajoitusten koskea käyttämääni porttia.

http://www.elisa.fi/saunalahti/asiakaspalvelu/570/osoitteenmuunnos-nat/

lainaus:

Normaalisti sisäänpäin kulkevassa liikenteessä on suljettuna portit: 135, 137-139, 445 ja 25

http://www2.dna.fi/tekniset-tiedot

lainaus:

Kaikista liittymistä on tietoturvasyistä johtuen estetty liikenne seuraaviin TCP/UDP-portteihin: 25, 135, 137, 138, 139, 445 ja 593.

The Alchemist [12.07.2013 12:31:28]

#

No kannattaisi nyt aluksi edes paikantaa itse se, että onko vika siinä, ettei Arduino koskaan saa viestiä, vai siinä että sen lähettämä vastaus häviää jonnekin.

fergusq [12.07.2013 13:04:06]

#

Olet ehkä tehnyt portinohjauksen väärin tai vastaavaa. Kuten Alchemisti sanoi, varmista, että viesti menee perille.

Macro [12.07.2013 13:15:11]

#

Vika ei ole porttiohjauksissa eikä siinä, ettei Arduino saisi viestiä.

fergusq [12.07.2013 13:23:24]

#

Miten alustat yhteyden Arduino-koodissasi?

Grez [12.07.2013 19:58:09]

#

veikkaan että kun puhelin on "internetissä" eli ilmeisesti mobiiliverkossa niin se saattaa olla NATin takana eikä UDP-paketit välttämättä siitä johtuen tule puhelimen suuntaan.

Macro [12.07.2013 21:33:25]

#

Jotain sellasta siellä ehkä oli ongelmana. Muutinpahan ihan normaaliksi socketiksi, niin alkoi pelittää (ei ollut silti porttiohjauksissa: sekä UDP- että TCP-portit oli ohjattu).

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta