Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中对套接字的非阻塞写入_Java_Android_Sockets_Nonblocking_Java Io - Fatal编程技术网

Java Android中对套接字的非阻塞写入

Java Android中对套接字的非阻塞写入,java,android,sockets,nonblocking,java-io,Java,Android,Sockets,Nonblocking,Java Io,我有一个Android应用程序,它有一个打开的套接字。我想写入这个套接字,而不可能在写入时阻塞线程相当长的时间。如果发生任何IO错误,我希望写入操作只是静静地失败。有一种简单的方法可以做到这一点吗?是的,NIO在套接字上提供了一个类调用getChannel方法,它允许您调用configureBlocking以使用非阻塞模式。然后,您应该通过通道而不是通过套接字对象执行所有I/O。是的,NIO在套接字上提供了一个类调用getChannel方法,它允许您调用configureBlocking以使用非

我有一个Android应用程序,它有一个打开的套接字。我想写入这个套接字,而不可能在写入时阻塞线程相当长的时间。如果发生任何IO错误,我希望写入操作只是静静地失败。有一种简单的方法可以做到这一点吗?

是的,NIO在套接字上提供了一个类调用getChannel方法,它允许您调用configureBlocking以使用非阻塞模式。然后,您应该通过通道而不是通过套接字对象执行所有I/O。

是的,NIO在套接字上提供了一个类调用getChannel方法,它允许您调用configureBlocking以使用非阻塞模式。然后,您应该通过通道来完成所有I/O,而不是通过Socket对象。

您可能需要考虑查看NiO:


你可能要考虑看NiO:



在一个单独的线程上执行写操作?@MByD:Ugh。不。只是不。线程不能替代非阻塞I/O。@Chris Jester Young为什么?你能详细解释一下吗?保罗:比我解释得更清楚-在这种情况下,我只会为现有的套接字代码生成一个线程。在单独的线程上执行写操作?@MByD:Ugh。不。只是不。线程不能替代非阻塞I/O。@Chris Jester Young为什么?你能详细解释一下吗?保罗:比我解释得更清楚-在这个场景中,我会为现有的套接字代码生成一个线程。不是因为你的答案是错的,不是错的,而是因为它提供的信息比我的答案少,而且发布时间晚了3分钟。我认为找到java.nio包的链接仍然很方便。Chris Jester Young-实际上我比你先开始研究我的答案。速度不一定是一种美德,而速度无疑是一种恶习。@paulsm4:现在,我并不是说你偷了我的答案或别的什么。对此我毫不犹豫。我只是想说,在旧时的荣誉准则中,如果你发布了一个迟来的答案,而这个答案并不比以前的答案好多少,那么正确的做法是删除你的答案。原则是,在所有其他条件相同的情况下,较早的答案应该获胜。当然,仅出于这个原因,我就删除了许多答案。@paulsm4:顺便说一句,拥有10k rep的用户可以看到被删除的帖子,一旦你到了那里,你就会注意到经常有多少被删除的重复答案。我向你们提到这一点是为了深入了解SO文化是如何运作的。不是因为你的答案是错的,不是错的,而是因为它提供的信息比我的答案少,而且发布时间晚了3分钟。我认为找到java.nio包的链接仍然很方便。Chris Jester Young-实际上我比你先开始研究我的答案。速度不一定是一种美德,而速度无疑是一种恶习。@paulsm4:现在,我并不是说你偷了我的答案或别的什么。对此我毫不犹豫。我只是想说,在旧时的荣誉准则中,如果你发布了一个迟来的答案,而这个答案并不比以前的答案好多少,那么正确的做法是删除你的答案。原则是,在所有其他条件相同的情况下,较早的答案应该获胜。当然,仅出于这个原因,我就删除了许多答案。@paulsm4:顺便说一句,拥有10k rep的用户可以看到被删除的帖子,一旦你到了那里,你就会注意到经常有多少被删除的重复答案。我向你们提到这一点,是为了洞察SO文化是如何运作的。