Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

when using README example code, exception is thrown #19

Open
mitdre opened this issue Mar 13, 2018 · 4 comments
Open

when using README example code, exception is thrown #19

mitdre opened this issue Mar 13, 2018 · 4 comments

Comments

@mitdre
Copy link
Contributor

mitdre commented Mar 13, 2018

    sSend = new DatagramSocket(new InetSocketAddress("0.0.0.0", 3333));
    // listen on 3334
    sRecv = new DatagramSocket(new InetSocketAddress("0.0.0.0", 3334));

    // don't block for more than 10 seconds
    sRecv.setSoTimeout(10000);

    // get broadcast permission
    sSend.setBroadcast(true);

when using provided code example shown above, this exception is thrown.


03-13 15:15:12.516 28144-28144/example.proto.atp E/AndroidRuntime: FATAL EXCEPTION: main
                                                                  Process: example.proto.atp, PID: 28144
                                                                  java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
                                                                   Caused by: java.lang.reflect.InvocationTargetException
                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358) 
                                                                   Caused by: java.net.SocketException: failed set socket option
                                                                      at org.quietmodem.Quiet.DatagramSocket.nativeSetSoTimeout(Native Method)
                                                                      at org.quietmodem.Quiet.DatagramSocket.setSoTimeout(DatagramSocket.java:215)
                                                                      at example.proto.atp.MainActivity.broadcast(MainActivity.kt:125)
                                                                      at example.proto.atp.MainActivity.onKeyDown(MainActivity.kt:229)
                                                                      at android.view.KeyEvent.dispatch(KeyEvent.java:3322)
                                                                      at android.app.Activity.dispatchKeyEvent(Activity.java:3155)
                                                                      at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:403)
                                                                      at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4954)
                                                                      at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4916)
                                                                      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4451)
                                                                      at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4504)
                                                                      at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4470)
                                                                      at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4603)
                                                                      at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4478)
                                                                      at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4660)
                                                                      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4451)
                                                                      at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4504)
                                                                      at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4470)
                                                                      at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4478)
                                                                      at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4451)
                                                                      at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4504)
                                                                      at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4470)
                                                                      at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4636)
                                                                      at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4805)
                                                                      at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:3035)
                                                                      at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2571)
                                                                      at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2562)
                                                                      at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:3012)
                                                                      at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
                                                                      at android.os.MessageQueue.nativePollOnce(Native Method)
                                                                      at android.os.MessageQueue.next(MessageQueue.java:323)
                                                                      at android.os.Looper.loop(Looper.java:136)
                                                                      at android.app.ActivityThread.main(ActivityThread.java:6692)
                                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) 
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358) 
@brian-armstrong
Copy link
Member

Can you show me all of your imports for that file, or better yet, link to the project itself? It looks like you may be importing java.net.Socket

@mitdre
Copy link
Contributor Author

mitdre commented Mar 13, 2018

import android.Manifest
import android.app.Activity
import android.content.pm.PackageManager
import android.os.Bundle
import android.util.Log
import android.view.KeyEvent
import org.quietmodem.Quiet.DatagramPacket
import org.quietmodem.Quiet.DatagramSocket
import org.quietmodem.Quiet.FrameReceiverConfig
import org.quietmodem.Quiet.FrameTransmitterConfig
import org.quietmodem.Quiet.InetSocketAddress
import org.quietmodem.Quiet.ModemException
import org.quietmodem.Quiet.NetworkInterface
import org.quietmodem.Quiet.NetworkInterfaceConfig
import java.io.IOException
import java.net.SocketException
import java.nio.charset.Charset
import android.support.v4.app.ActivityCompat
import org.quietmodem.Quiet.InetAddress

@brian-armstrong
Copy link
Member

Thanks, I'll take a look later

@brian-armstrong
Copy link
Member

As a temporary workaround, you can just delete sRecv.setSoTimeout(10000);, though it does mean that receiving will block forever until it gets a packet. You'd want to run that on a non UI thread.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants