DatagramSocket - java.lang.NullPointerException [Android] [重复]
Posted
技术标签:
【中文标题】DatagramSocket - java.lang.NullPointerException [Android] [重复]【英文标题】:DatagramSocket - java.lang.NullPointerException [Android] [duplicate] 【发布时间】:2017-10-28 19:00:23 【问题描述】:我创建了一个类TFTPClient
,它允许用户连接到服务器并能够通过类方法发出某些请求。我已经在 android Studio 之外创建并测试了它,但是当我传输和编译我的代码时出现错误。该错误是在MainActivity.java中引起的,但不是在创建类对象时引起的,而是在调用某些方法时引起的
TFTPClient c = new TFTPClient(); //Works fine
try
c.sendAndReceive(); //Get the error
catch (UnknownHostException e)
e.printStackTrace();
这里是 sendAndReceive 方法代码
public void sendAndReceive() throws UnknownHostException
int sendPort;
sendPort = SERVER_RECV_PORT; //(60700)
int clientConnectionPort = -1;
InetAddress serverAddress = InetAddress.getByName("172.17.49.153");
try
clientConnectionPort = sendRequest(serverAddress, sendPort, "all");
catch (IOException e)
//System.out.println("error");
receive(serverAddress, clientConnectionPort);
【问题讨论】:
【参考方案1】:您确定申请了互联网许可吗?根据Finley Smith 的说法,在旧版本的android 中,它不允许您在未经许可的情况下访问互联网。 您可以通过将这行代码放在 AndroidManifest 文件中来添加 Internet 权限:
<uses-permission android:name="android.permission.INTERNET" />
另外,您能否从 LogCat 发送错误消息,以便下次提供更多信息,谢谢!
【讨论】:
你错了。 You still need the internet permission。即使是最新的文档也说明了这一点。 The docs on the internet permission says it isn't deprecated 表示它仍然是必需的。不推荐在更高版本中使用的权限,但不会删除以保持向后兼容性。无论哪种方式,您都需要互联网许可,不管是什么版本 如果我们知道究竟是什么错误仍然是最好的。 当您有足够的声誉时,您可以通过评论来做到这一点。同时,确保即使来源指向 Google Play 而不是 Android 操作系统本身,您也不要过分依赖答案。现在这是一个带有错误信息的答案,这个问题是重复的和离题的,因为它没有 MCVE。而不是本质上添加一个美化的评论作为答案,其中有一部分是错误的 以后我会记住这一点的,谢谢!以上是关于DatagramSocket - java.lang.NullPointerException [Android] [重复]的主要内容,如果未能解决你的问题,请参考以下文章
DatagramSocket.receive()不止一次被调用
DatagramSocket - java.lang.NullPointerException [Android] [重复]