Android UDP连接

时间:2015-05-20 11:51:29

标签: android udp

所以,我试图通过UDP连接向朋友发送一个简单的字符串到C#应用程序。

这是我用来尝试发送字符串的方法。

public void runUdpClient()  {
    String udpMsg = "ALOOOOOO ";
    DatagramSocket ds = null;
    try {
        ds = new DatagramSocket();
        InetAddress serverAddr = InetAddress.getByName("xxx.xxx.xxx.xxx");
        DatagramPacket dp;
        dp = new DatagramPacket(udpMsg.getBytes(), udpMsg.length(), serverAddr, 55901);
        ds.send(dp);

    } catch (SocketException e) {
        e.printStackTrace();
    }catch (UnknownHostException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (ds != null) {
            ds.close();
        }
    }
}

(没有说实际IP,为了我朋友的PC的安全而掩盖它)

现在,我得到的错误如下:

05-20 14:43:44.399: E/DatabaseUtils(2347): Writing exception to parcel
05-20 14:43:44.399: E/DatabaseUtils(2347): java.lang.SecurityException:             Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
05-20 14:43:44.399: E/DatabaseUtils(2347):  at com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:13140)
05-20 14:43:44.399: E/DatabaseUtils(2347):  at android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2038)
05-20 14:43:44.399: E/DatabaseUtils(2347):  at com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:607)
05-20 14:43:44.399: E/DatabaseUtils(2347):  at android.content.ContentProvider$Transport.call(ContentProvider.java:279)
05-20 14:43:44.399: E/DatabaseUtils(2347):  at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:273)
05-20 14:43:44.399: E/DatabaseUtils(2347):  at android.os.Binder.execTransact(Binder.java:388)
05-20 14:43:44.399: E/DatabaseUtils(2347):  at dalvik.system.NativeStart.run(Native Method)

现在,这是我第一次尝试通过UDP连接发送内容,所以我可能搞砸了某些内容(?),但我对此表示怀疑,因为我已经检查并重新检查了......

如果需要其他信息,请与我们联系。

编辑:添加权限

<uses-permission android:name="android.permission.INTERNET"/>                <usespermissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

1 个答案:

答案 0 :(得分:-1)

应用程序需要使用UDP发送数据的必要权限。权限在Android项目的AndroidManifest.xml中定义。

如果您尚未添加其他权限,请将以下行添加到AndroidManifest.xml:

 <uses-permission android:name="android.permission.INTERNET"/>

有关android中权限的更多信息,请查看android开发者网络: https://developer.android.com/guide/topics/security/permissions.html