java套接字创建失败_java - Android UDP套接字IOException:sendto失败:EPERM(不允许操作) - 堆栈内存溢出...

本文介绍了一个使用Android进行UDP通信的应用程序遇到的问题,在运行一段时间后出现Operation not permitted异常的情况及可能的原因。

我用Android编写了一个与UDP套接字定期通信的应用程序。 我创建了一个datagramSocket,并每隔5秒定期发送和接收来自服务器的一个数据包,这是代码的一部分:

Thread commTh = new Thread(new Runnable() {

@Override

public void run() {

try {

ds = new DatagramSocket();

serverAddr = InetAddress.getByName(ip);

ds.connect(serverAddr, port);

while(exitThread) {

....

DatagramPacket dp;

dp = new DatagramPacket(data.getBytes(),

data.length(), serverAddr, port);

ds.setSoTimeout(DEFAULT_TIMEOUT);

ds.send(dp);

byte[] lMsg = new byte[SOCKET_BYTE];

dp = new DatagramPacket(lMsg, lMsg.length);

ds.receive(dp);

....

Thread.sleep(5000);

}

}

catch (Exception e) {

e.printStackTrace();

}

}

});

几十分钟后,我随机得到以下异常:

W/System.err: java.io.IOException: sendto failed: EPERM (Operation not permitted)

W/System.err: at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:576)

at libcore.io.IoBridge.sendto(IoBridge.java:544)

at java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:125)

at java.net.DatagramSocket.send(DatagramSocket.java:721)

为什么我不允许进行手术? 我的清单中有互联网许可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值