在java的套接字编程中,大部分一般使用阻塞io套接字编程。套接字的读取和写入会阻塞(也就是说不管现在有没有写入/读出数据 调用read和write方法将会阻塞)。而nio将i/o事件注册,当特定的注册i/o事件到达时会通知您。不需要轮询,也不需要创建大量的线程下面一个例子:下载
Server代码
新版本程序更新主要体现在:完美整合BBS论坛程序,用户只须注册一个帐号,即可全站通用!采用目前流行的Flash滚动切换广告 变换形式多样,受人喜爱!在原有提供的5种在线支付基础上增加北京云网支付!对留言本重新进行编排,加入留言验证码,后台有留言审核开关对购物系统的前台进行了一处安全更新。在原有文字友情链接基础上,增加LOGO友情链接功能强大的6种在线支付方式可选,自由切换。对新闻列表进行了调整,
0
package simple.socket;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.nio.ByteBuffer;
import java.nio.channels.*;
import java.util.Iterator;
import java.util.Set;
/**
* Created by banxia on 16/10/12.
*/
public class UseNioSocket {
public static void main(String[] args) throws IOException {
// 创建一个selector 对象
Selector selector = Selector.open();
ServerSocketChannel ssc = ServerSocketChannel.open();
ssc.configureBlocking(false);
ssc.socket().bind(new InetSocketAddress(8888));
ssc.register(selector, SelectionKey.OP_ACCEPT);
ByteBuffer buffer = ByteBuffer.allocate(1024);
System.out.println("服务已经启动端口:" + 8888);
while (true) {
int selectNum = selector.select();
System.out.println("selectNum=" + selectNum);
if (selectNum <= 0) {
continue;
}
// 获取
Iterator<SelectionKey> it = selector.selectedKeys().iterator();
while (it.hasNext()) {
SelectionKey key = it.next();
if (key.readyOps() == SelectionKey.OP_ACCEPT) {
// 接收 accept
ServerSocketChannel channel = (ServerSocketChannel) key.channel();
SocketChannel accept = channel.accept();
accept.configureBlocking(false);
System.out.println("接收客户端:" + accept.socket().getInetAddress().getHostAddress() + ":" + accept.socket().getPort());
accept.register(selector, SelectionKey.OP_READ);
it.remove();
} else {
SocketChannel sc = (SocketChannel) key.channel();
System.out.println("接收客户端:" + sc.socket().getInetAddress().getHostAddress() + ":" + sc.socket().getPort() +"开始处理...");
while (true) {
buffer.clear();
long l = sc.read(buffer);
if (l <= 0) {
break;
}
System.out.print(".");
buffer.flip();
sc.write(buffer);
}
System.out.print("\n");
it.remove();
System.out.println("接收客户端:" + sc.socket().getInetAddress().getHostAddress() + ":" + sc.socket().getPort() +"处理完成处理...");
}
}
}
}
}
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号