VoIP in local Spark client

Hi all, I’m new to the Openfire and Spark technologies so forgive me if I’m overlooking something simple, but I’m having issues establishing a VoIP call using two Spark clients over a Openfire server. My setup is as follows:

All on the one machine, a locally hosted Openfire server is running in the background with a MySQL setup. Two Spark clients are running, logged in as user1 and user2. I have configured the STUN server settings, setting the primary IP address to my local IP address, and the STUN ports have been left at the defaults. The Spark clients can message each other and send files with no issues, but I cannot establish a VoIP call between them. When I make the Spark clients call each other I am able to establish a connection between them. The Spark client notifies user2 that he is recieving a call, and if he answers, the the connection is established but no sound is transmitted. And once I end this call, if I attempt to establish a call between these two clients again without relaunching them the connection will never fully establish itself. So with each call attempt I must re-launch both clients. I have my computer’s firewall turned off. The main error I’m trying to solve is as follows (extracted from the Spark error log):

java.net.PortUnreachableException: ICMP Port Unreachable

  • at java.net.PlainDatagramSocketImpl.receive0(Native Method)*

  • at java.net.PlainDatagramSocketImpl.receive(Unknown Source)*

  • at java.net.DatagramSocket.receive(Unknown Source)*

  • at de.javawi.jstun.test.DiscoveryTest.test1(DiscoveryTest.java:103)*

  • at de.javawi.jstun.test.DiscoveryTest.test(DiscoveryTest.java:65)*

  • at de.javawi.jstun.test.demo.ice.ICENegociator.testInterface(ICENegociator.java:12 6)*

  • at de.javawi.jstun.test.demo.ice.ICENegociator.access$000(ICENegociator.java:40)*

  • at de.javawi.jstun.test.demo.ice.ICENegociator$1.run(ICENegociator.java:88)*

  • at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)*

  • at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)*

  • at java.lang.Thread.run(Unknown Source)*

For those wondering, the reason this is all done on the one machine is because I am attempting to develop an instant messenger of my own, but currently only have access to one machine. I have my own prototype messenger sending files and messages to Spark clients with no issues, but I feel the VoIP issues I encountered are not a coding error, but maybe a server configuration no network issue?

Any help would be appreciated!