1
는 내 컴퓨터에있는 서버에 UDP를 통해 메시지를 전송하는 작은 자바 코드 스크립트를 작성했습니다 : 내가 네트워크에있는 다른 컴퓨터에서 동일한 코드를 시도왜 안드로이드에서 내 UDP 메시지가 작동하지 않습니까?
@Override
public void onClick(View view) {
try {
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IP = InetAddress.getByName("192.168.1.5");
byte[] sendData = new byte[1024];
String sentence = "HELLO";
sendData = sentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IP, 9876);
clientSocket.send(sendPacket);
clientSocket.close();
} catch(IOException e) {
}
}
을하고, 메시지는 제대로 전송 받았습니다. 안드로이드 폰에서 이걸 실행하려고 할 때, 서버는 그것을받지 못할 것입니다. 왜 그런가요?
내가 매니페스트에 인터넷 permisson를 추가 깜빡했다, 그러나 나는 것을했을 때, 응용 프로그램 충돌이 나는 버튼을 클릭하면
편집 :
06-13 21:14:26.932 13501-13501/com.example.omgandroid E/AndroidRuntime﹕ FATAL EXCEPTION: main
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1144)
at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:175)
at libcore.io.IoBridge.sendto(IoBridge.java:466)
at java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:182)
at java.net.DatagramSocket.send(DatagramSocket.java:284)
at com.example.omgandroid.MainActivity.onClick(MainActivity.java:72)
at android.view.View.performClick(View.java:4475)
at android.view.View$PerformClick.run(View.java:18786)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
at dalvik.system.NativeStart.main(Native Method)
06-13 21:14:38.987 13501-13501/com.example.omgandroid I/Process﹕ Sending signal. PID: 13501 SIG: 9
는 어떤이의 원인이 될 수 있습니까?
로컬 네트워크를 사용중인 Android 휴대 전화의 경우? 셀룰러 데이터를 통해 나가는 경우 '192.168'네트워크 블록을 사용할 수 없으며 '전용'블록이며 라우팅 할 수 없습니다. 셀 데이터 공급자는 문자 그대로이 IP 주소가있는 곳을 ** NO ** 아이디어로 가지고 있습니다. –
물론 휴대 전화는 Wi-Fi에 연결되어 있지만 메시지가 wifi 또는 3g를 통해 전송되는지 여부는 확실하지 않습니다. 어떻게 알 수 있습니까? – theva
잡으려는 예외를 확인하고 어떤 것이 올라가고 있는지 확인하십시오. 내 생각 엔 안드로이드 매니페스트에서 인터넷 권한을 요청하는 것을 잊어 버린 것 같습니다. – Pieces