编程语言
首页 > 编程语言> > java – 在准备好读取的多个套接字中进行选择

java – 在准备好读取的多个套接字中进行选择

作者:互联网

我正在编写服务器 – 客户端应用程序.我有一个服务器,它拥有我从ServerSocket的accept()方法获得的几个套接字.我想从这些套接字读取,但我不知道哪个套接字可以读取.我需要某种选择器来选择一个可以读取的套接字,所以我可以读取它发送的数据.

谢谢.

解决方法:

您基本上有两个选项可以使它工作:

>每个接受的套接字都有专用线程.这是因为’常规’套接字I / O正在阻塞.您无法使用单个线程有选择地处理多个套接字.由于没有“偷看”功能,因此当您调用read时,您将始终面临被阻止的风险.通过为每个有兴趣读取的套接字创建一个线程,阻塞读取不会阻止任何其他操作(线程).
>使用NIO. NIO允许异步I / O操作,基本上就是您要求的 – 选择器.

如果您决定采用NIO方式,我建议您查看MINANetty.我发现它们比普通的NIO更容易使用.您不仅可以获得更好的API,而且至少MINA还可以解决一些令人讨厌的NIO错误.

标签:java,io,nonblocking
来源: https://codeday.me/bug/20191002/1844863.html