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

学校网站首页代码html制作网站模板

学校网站首页代码html,制作网站模板,WordPress大前端dux,深圳全网营销推广平台如果你不想使用循环来监听客户端的连接和数据,你可以使用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.yayakq.cn/news/623472/

相关文章:

  • 男女做暧暧网站免费wordpress.org去除
  • 购物网站建设思维导图wordpress保存不了
  • 建视频网站系统吗网站能不能一边用 一边备案
  • 简要说明网站建设的步骤北京顺义网站建设
  • 无锡网站制作哪家强国内商务网络公司排名
  • 做网站宁波大点的网络公司可以自己制作头像的网站
  • 金花站长工具wordpress安装方式
  • 外贸长尾关键词挖掘网站中山做网站哪家好
  • 个人网站建设策划书怎么写公司怎么建立自己网站
  • 重庆微信网站建设报价表网络开发工程师是做什么的
  • 关于申请网站建设维护经费网站全站开发需要学什么
  • 做网站联系我们在那个板块里面上海网站制作机构
  • wordpress评论不准设置网站wordpress编辑图片
  • 无锡免费网站制作长沙这边网站建设
  • 装饰公司网站模版安装wordpress提示500错误
  • 兼职 网站 小程序 建设seo搜索优化培训
  • 哪些网站可以查企业信息怎么开小程序店铺
  • 网站空间商拿不回数据网上注册公司名字审核
  • 高级采矿平台建立在小行星带郑州网站优化外包
  • 想买手表在哪个网站买是正品html代码例子
  • 网页网站中国关键词网站
  • 深圳移动官网网站建设百度一下首页官网百度
  • wordpress为什么被墙黑帽seo之搜索引擎
  • 福建建设厅安全员报名网站ks免费刷粉网站推广
  • 网站建设啊电商数据分析师
  • 江西省飞宏建设工程有限公司 网站网站设计模式
  • 网站天下响应式网站开发公司
  • 免费微网站案例三门峡seo
  • wordpress优化网站网站开发与维护是干什么的
  • 打不开wordpress站点电子商城网站开发要多少钱