当前位置: 首页 > news >正文

泰安放心的企业建站公司网页制作用什么软件比较好

泰安放心的企业建站公司,网页制作用什么软件比较好,wordpress 钩子的好处,购物型网站建设如果你不想使用循环来监听客户端的连接和数据,你可以使用Java NIO(New I/O)的Selector类来实现非阻塞的Socket监听。Selector类提供了一种选择一组已经就绪的通道的机制,这样你就不需要使用循环来等待连接和数据。 以下是使用Sel…

如果你不想使用循环来监听客户端的连接和数据,你可以使用Java NIO(New I/O)的Selector类来实现非阻塞的Socket监听。Selector类提供了一种选择一组已经就绪的通道的机制,这样你就不需要使用循环来等待连接和数据。

以下是使用Selector类的示例代码:

private ServerSocketChannel serverSocketChannel;
private Selector selector;private void startServer() throws IOException {serverSocketChannel = ServerSocketChannel.open();serverSocketChannel.configureBlocking(false);serverSocketChannel.socket().bind(new InetSocketAddress(8888));selector = Selector.open();serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);while (true) {int readyChannels = selector.select();if (readyChannels == 0) {continue;}Set<SelectionKey> selectedKeys = selector.selectedKeys();Iterator<SelectionKey> keyIterator = selectedKeys.iterator();while (keyIterator.hasNext()) {SelectionKey key = keyIterator.next();if (key.isAcceptable()) {handleAcceptableKey(key);} else if (key.isReadable()) {handleReadableKey(key);}keyIterator.remove();}}
}private void handleAcceptableKey(SelectionKey key) throws IOException {ServerSocketChannel serverChannel = (ServerSocketChannel) key.channel();SocketChannel clientChannel = serverChannel.accept();clientChannel.configureBlocking(false);clientChannel.register(selector, SelectionKey.OP_READ);Log.d("Server", "设备已连接");
}private void handleReadableKey(SelectionKey key) throws IOException {SocketChannel channel = (SocketChannel) key.channel();ByteBuffer buffer = ByteBuffer.allocate(1024);int bytesRead = channel.read(buffer);if (bytesRead == -1) {channel.close();Log.d("Server", "设备已断开连接");return;}buffer.flip();byte[] data = new byte[buffer.limit()];buffer.get(data);String receivedData = new String(data);Log.d("Server", "接收到数据:" + receivedData);// 处理接收到的数据// 回复客户端ByteBuffer responseBuffer = ByteBuffer.wrap(("已接收到数据:" + receivedData).getBytes());channel.write(responseBuffer);
}

在上面的代码中,我们首先创建一个ServerSocketChannel对象,并将其配置为非阻塞模式。然后,我们将ServerSocketChannel绑定到指定的端口,并将其注册到Selector中,以便监听客户端连接。

while循环中,我们使用selector.select()方法来选择已经就绪的通道。如果没有就绪的通道,我们可以继续等待。一旦有通道就绪,我们使用selector.selectedKeys()方法获取已选择的键集合,并使用迭代器遍历这些键。

在迭代器循环中,我们根据键的类型判断通道是否可接受连接或可读取数据。如果是可接受连接的通道,我们使用handleAcceptableKey()方法处理。如果是可读取数据的通道,我们使用handleReadableKey()方法处理。

handleAcceptableKey()方法中,我们使用serverChannel.accept()方法来接受客户端连接,并将客户端通道注册到Selector中,以便监听客户端发送的数据。

handleReadableKey()方法中,我们首先读取客户端发送的数据,并将其存储在ByteBuffer中。如果读取到的字节数为-1,表示客户端断开连接,我们关闭通道并在日志中打印出"设备已断开连接"。如果读取到有效的数据,我们可以在代码中处理这些数据,并通过通道向客户端发送回复。

请注意,这只是一个使用Selector的简单示例代码。你需要根据你的实际需求进行适当的修改和优化。

希望这可以解决你的问题!

http://www.bjxfkj.com.cn/article/110712.html

相关文章:

  • php+mysql网站开发全程实例 pdf开发微信小程序收费吗
  • 老河口网站定制哪家做网站最便宜
  • 网站优化站外链接怎么做网站3网合一是怎么做的
  • kotlin做网站外贸网站定制公司
  • 怎么做公司网站竞价两个人做aj的视频教程
  • 旅行社网站建设规划书单位怎样做网站
  • 国外做logo的网站wordpress主题模板百度云
  • 扬中做网站整人图片制作器
  • 音乐网站建设规划outlook企业邮箱官网
  • 做交互的设计网站柳江企业网站建设公司
  • 栗田工业大连有效公司网站哪年做的公司建设网站费用做那个科目
  • 做网站接单的网站鉴定手表网站
  • 交易所开发深圳网站制作上海注册公司买新能源车
  • 网站上社保做增员怎么做手机开发者选项
  • 做ic的电子网站有哪些wordpress备份插件中文
  • 建个网站有什么用龙岗中心医院
  • 遵化市城乡建设局网站网页怎么截图
  • 有关网站建设的图片软文代写新闻稿
  • 网站建设推广价格施工企业风险防控
  • HTML建网站新建一个公司官网
  • 口碑好的高密网站建设wordpress 应用商店模板
  • 播放器网站怎么做毕业设计网站题目
  • 怎样申请免费网站空间招标信息网
  • 网站开发语言作用社区网站搭建
  • 企业做网站乐云seo快速上线上海网站制作平台
  • 网站开发建设流程合肥公司网站开发
  • 什么可以用手机做网站怎么建立网站快捷方式
  • jn建站系统官网论坛网站免费建设模板下载
  • 网站开发环境搭建网络管理系统建设方案
  • 怎么把网页设置为不信任网站国外免费网站模板