我做了一个应用,服务器ServerSocketChannel绑定端口8989
然后,我连续打开四个SocketChannel以连接到服务器:
在第个SocketChannel打开后,打印其内容为:
++ 增加任务: [127.0.0.1:8989->F:\WorkSpace\NBSpace\StudentSystem\config\resource\icon_down.gif]
+++ TcpAgent: java.nio.channels.SocketChannel[connected local=/127.0.0.1:5463 remote=/127.0.0.1:8989]
++ 增加任务: [127.0.0.1:8989->F:\WorkSpace\NBSpace\StudentSystem\config\resource\m0.gif]
+++ TcpAgent: java.nio.channels.SocketChannel[connected local=/127.0.0.1:5464 remote=/127.0.0.1:8989]
++ 增加任务: [127.0.0.1:8989->F:\WorkSpace\NBSpace\StudentSystem\config\resource\icon.png]
+++ TcpAgent: java.nio.channels.SocketChannel[connected local=/127.0.0.1:5465 remote=/127.0.0.1:8989]
++ 增加任务: [127.0.0.1:8989->F:\WorkSpace\NBSpace\StudentSystem\config\resource\tray.png]
+++ TcpAgent: java.nio.channels.SocketChannel[connected local=/127.0.0.1:5466 remote=/127.0.0.1:8989]
从上面可以看出,第个SocketChannel都在不同的端口打开了,并且每个SocketChannel的isConnected()为true;问题:服务器端总只能接受一个连接:
+++ 连接请求Key个数: 1
+++ 接收一个连接请求: java.nio.channels.SocketChannel[connected local=/127.0.0.1:8989 remote=/127.0.0.1:5463]
而其它的三个都边不上,但是他们isConnected()又为true;而服务器一直在等待连接:
int count = this.acceptSelector.select(50);
if (count > 0) {
Set<SelectionKey> keys = acceptSelector.selectedKeys();
System.out.println("+++ 连接请求Key个数: " + keys.size());
Iterator<SelectionKey> selectKeys = keys.iterator();
while (selectKeys.hasNext()) {
selectKeys.next();
SocketChannel connection = this.serverSocket.accept();
if (connection != null) {
new TcpAgent(this.messageSelector, connection);
}
}
}望各位多多指教:问题到底出在哪里?
然后,我连续打开四个SocketChannel以连接到服务器:
在第个SocketChannel打开后,打印其内容为:
++ 增加任务: [127.0.0.1:8989->F:\WorkSpace\NBSpace\StudentSystem\config\resource\icon_down.gif]
+++ TcpAgent: java.nio.channels.SocketChannel[connected local=/127.0.0.1:5463 remote=/127.0.0.1:8989]
++ 增加任务: [127.0.0.1:8989->F:\WorkSpace\NBSpace\StudentSystem\config\resource\m0.gif]
+++ TcpAgent: java.nio.channels.SocketChannel[connected local=/127.0.0.1:5464 remote=/127.0.0.1:8989]
++ 增加任务: [127.0.0.1:8989->F:\WorkSpace\NBSpace\StudentSystem\config\resource\icon.png]
+++ TcpAgent: java.nio.channels.SocketChannel[connected local=/127.0.0.1:5465 remote=/127.0.0.1:8989]
++ 增加任务: [127.0.0.1:8989->F:\WorkSpace\NBSpace\StudentSystem\config\resource\tray.png]
+++ TcpAgent: java.nio.channels.SocketChannel[connected local=/127.0.0.1:5466 remote=/127.0.0.1:8989]
从上面可以看出,第个SocketChannel都在不同的端口打开了,并且每个SocketChannel的isConnected()为true;问题:服务器端总只能接受一个连接:
+++ 连接请求Key个数: 1
+++ 接收一个连接请求: java.nio.channels.SocketChannel[connected local=/127.0.0.1:8989 remote=/127.0.0.1:5463]
而其它的三个都边不上,但是他们isConnected()又为true;而服务器一直在等待连接:
int count = this.acceptSelector.select(50);
if (count > 0) {
Set<SelectionKey> keys = acceptSelector.selectedKeys();
System.out.println("+++ 连接请求Key个数: " + keys.size());
Iterator<SelectionKey> selectKeys = keys.iterator();
while (selectKeys.hasNext()) {
selectKeys.next();
SocketChannel connection = this.serverSocket.accept();
if (connection != null) {
new TcpAgent(this.messageSelector, connection);
}
}
}望各位多多指教:问题到底出在哪里?
解决方案 »
- JDK安装问题,以及.java文件
- List的排序
- applet换个机器,不能正常显示,这是怎么回事?
- 根据手机号码判定是中移动或中联通,或判定是哪个省份的号
- sun.security.action.GetPropertyAction ?
- Properties的中文乱码问题.
- 用Middlegen只生成出.hbm.xml 文件,java 文件出不来,怎么办啊?
- java初学者,求关于Son s = new Son()这句话的理解!
- 有没有检查实例类型的方法?
- 为什么被拷贝的二维数组打印不出来了?在线等!
- java下怎么实现dir/p的效果呢
- 关于写一个J2SE小项目的问题,帮帮忙!先谢谢各位了
new TcpAgent(this.messageSelector, connection);
} 我怎么没看到线程呢?
而在实际应用中 百分百要用线程控制的 楼主不妨试一下
今天正好碰到这个问题。