非阻塞socket服务器示例
来源:互联网 发布:男装淘宝店 编辑:程序博客网 时间:2024/06/04 00:22
最近看了看NIO,写了一下代码,感觉还不错。
package cn.jpy.test;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.Date;
import java.util.Iterator;
import java.util.Set;
public class SelecterTest {
public static void main(String[] args) {
try {
socketTest();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void socketTest() throws IOException{
int[] ports = {6961, 6962, 6963, 6964};
Selector selector = Selector.open();
for (int port : ports) {
ServerSocketChannel serverSocketChannel = null;
serverSocketChannel = ServerSocketChannel.open();
serverSocketChannel.configureBlocking(false);
ServerSocket server = serverSocketChannel.socket();
InetSocketAddress address = null;
address = new InetSocketAddress(port);
server.bind(address);
serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);
System.out.println("服务器正在运行");
}
while (selector.select() > 0) {
Set<SelectionKey> selectKeys = selector.selectedKeys();
Iterator<SelectionKey> iter = selectKeys.iterator();
while (iter.hasNext()) {
SelectionKey selectionKey = (SelectionKey) iter.next();
if(selectionKey.isAcceptable()){
ServerSocketChannel server = (ServerSocketChannel) selectionKey.channel();
SocketChannel client = server.accept();
client.configureBlocking(false);
ByteBuffer buffer = ByteBuffer.allocate(1024);
buffer.put(("当前时间" + new Date()).getBytes());
buffer.flip();
client.write(buffer);
client.close();
}
}
selectKeys.clear();
}
}
}
0 0
- 非阻塞socket服务器示例
- NIO Socket非阻塞模式代码示例
- NIO Socket实现非阻塞通信示例
- Java NIO非阻塞服务器示例
- Java NIO非阻塞服务器示例
- Java NIO非阻塞服务器示例
- socket编程的同步、异步与阻塞、非阻塞示例
- linux-socket connect阻塞和非阻塞模式 示例
- Java NIO 非阻塞Socket服务器构建
- 阻塞非阻塞socket
- socket阻塞,非阻塞
- TCP的socket连接示例(win/unix 非阻塞)
- JAVA 网络编程(2) SOCKET 非阻塞NIO示例
- Socket的阻塞/非阻塞
- Socket的阻塞/非阻塞
- Socket的阻塞/非阻塞
- Socket的阻塞/非阻塞
- socket阻塞非阻塞区别
- Linux下常用压缩格式的压缩与解压方法
- Hibernate注解实现一对一关联
- spring mvc搭建基本示例遇到的怪异问题及解决方法
- 【Android】Android中ContentProvider组件详解
- mysql中的left join用法 (及多条件查询
- 非阻塞socket服务器示例
- IOS 资料
- C++字符串操作
- 【深入浅出ios开发】UIActionSheet
- 实现一个最小栈的push(int x),pop(),top(),min()方法,要求都是常量时间
- setClickable(false)不起作用
- HDU4664
- 山寨版至理名言
- 什么是MapReduce?