Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android java.net.SocketException:socket failed:EACCES(Permission denied)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨,我得到一个 Android应用程序,但是当我启动它,我的控制台中出现错误.我正在使用Datagram套接字创建一个连接,而我正在使用2类:MainActivity(它是应用程序的主要活动)和UdpClientServer来创建连接.

这里@L_306_5@mainActivity:

public class MainActivity extends Activity {

private UdpClientServer cu;
private Edit@R_488_3801@Ipscheda;
private Edit@R_488_3801@UdpPort;

@Override
protected void onCreate(Bundle savedInstanceStatE) {
    super.onCreate(savedInstanceStatE);
    setContentView(R.layout.activity_main);
    textIpscheda = (EditText) findViewById(R.id.textIpscheda);
    textUdpPort = (EditText) findViewById(R.id.textUdpPort);


    try {
        cu = new UdpClientServer(this);
    } catch (IOException E) {
        e.printStackTrace();
    }
}

public EditText getTextIpscheda(){
    return textIpscheda;
}

public void setTextIpscheda(Edit@R_488_3801@Ipscheda){
    this.textIpscheda = textIpscheda;
}

public EditText getTextUdpPort() {
    return textUdpPort;
}

public void setTextUdpPort(Edit@R_488_3801@UdpPort) {
    this.textUdpPort = textUdpPort;
}

这里代码UdpClientServer:

public class UdpClientServer {

public static String sReceive;
private static DatagramSocket dSocket;
int receiveBufferSize = 1024;
int portUdp = 0;
final String PINGACMD = "AT*PINGA001";
InetAddress ipscheda;

byte[] receiveData = new byte[receiveBufferSize];
private MainActivity gui = null;

public UdpClientServer(MainActivity gui) throws SocketException,IOException {
    this.gui = gui;

    portUdp = Integer.parseInt(String.valueOf(gui.getTextUdpPort().getText()));
    dSocket = new DatagramSocket(portUdp);
}

public void run(){
    while (true) {
        // svuotamento buffer
        Arrays.fill(receiveData,(bytE) 0);
        DatagramPacket receivePacket = new DatagramPacket(receiveData,receiveData.length);

        try {
            dSocket.receive(receivePacket);
        } catch (IOException E) {
            e.printStackTrace();
        }
        ipscheda = receivePacket.getAddress();
        int port = receivePacket.getPort();
        gui.getTextUdpPort().setText("" + port);
        gui.getTextIpscheda().setText(ipscheda.getHostAddress());

        sReceive = new String(receivePacket.getData());
        this.sendCommand(PINGACMD);
    }

}

public void sendCommand(String outSentencE){

    byte[] sendData = outSentence.getBytes();

    DatagramPacket sendPacket = new DatagramPacket(sendData,sendData.length,ipscheda,portUdp);

    try {
        dSocket.send(sendPacket);
        Thread.sleep(100);
    } catch (IOException E) {
        e.printStackTrace();
    } catch (InterruptedException E) {
        e.printStackTrace();
    }
    finally {
    }
}

}

这里的logcat:

12-29 11:43:22.291  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ java.net.socketException: socket Failed: EACCES (Permission denied)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at libcore.io.IoBridge.socket(IoBridge.java:623)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at java.net.PlainDatagramSocketImpl.create(PlainDatagramSocketImpl.java:93)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at java.net.DatagramSocket.createSocket(DatagramSocket.java:157)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at java.net.DatagramSocket.<init>(DatagramSocket.java:80)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at com.example.matteo.myfirstapp.UdpClientServer.<init>(UdpClientServer.java:32)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at com.example.matteo.myfirstapp.MainActivity.onCreate(MainActivity.java:24)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at android.app.Activity.performCreate(Activity.java:5933)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at android.app.instrumentation.callActivityOnCreate(instrumentation.java:1105)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at android.app.ActivityThread.access$800(ActivityThread.java:144)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at android.app.ActivityThread$H.handlemessage(ActivityThread.java:1278)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at android.os.Handler.dispatchmessage(Handler.java:102)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at android.os.Looper.loop(Looper.java:135)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5221)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at java.lang.reflect.Method.invoke(Native Method)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at java.lang.reflect.Method.invoke(Method.java:372)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ Caused by: android.sy@R_502_2407@.ErrnoException: socket Failed: EACCES (Permission denied)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at libcore.io.Posix.socket(Native Method)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at libcore.io.blockGuardOs.socket(BlockGuardOs.java:282)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ at libcore.io.IoBridge.socket(IoBridge.java:608)
12-29 11:43:22.294  28914-28914/com.example.matteo.myfirstapp W/Sy@R_502_2407@.err﹕ ... 18 more

在我的AndroidManifest.xml中刚刚添加了字符串

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

但它不行

你可以帮我吗?
谢谢

解决方法

尝试添加以下@L_489_43@:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

大佬总结

以上是大佬教程为你收集整理的Android java.net.SocketException:socket failed:EACCES(Permission denied)全部内容,希望文章能够帮你解决Android java.net.SocketException:socket failed:EACCES(Permission denied)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。