!690 socket模块功能优化

Merge pull request !690 from uyong/v5-dev
This commit is contained in:
Looly 2022-07-11 01:12:13 +00:00 committed by Gitee
commit 93012d7728
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
3 changed files with 10 additions and 4 deletions

View File

@ -23,8 +23,9 @@ public class SocketUtil {
*
* @param channel {@link AsynchronousSocketChannel}
* @return 远程端的地址信息包括host和端口null表示channel为null或者远程主机未连接
* @throws IORuntimeException IO异常
*/
public static SocketAddress getRemoteAddress(AsynchronousSocketChannel channel) {
public static SocketAddress getRemoteAddress(AsynchronousSocketChannel channel) throws IORuntimeException {
try {
return (null == channel) ? null : channel.getRemoteAddress();
} catch (ClosedChannelException e) {
@ -41,8 +42,9 @@ public class SocketUtil {
*
* @param channel {@link AsynchronousSocketChannel}
* @return 远程主机是否处于连接状态
* @throws IORuntimeException IO异常
*/
public static boolean isConnected(AsynchronousSocketChannel channel) {
public static boolean isConnected(AsynchronousSocketChannel channel) throws IORuntimeException {
return null != getRemoteAddress(channel);
}

View File

@ -3,6 +3,7 @@ package cn.hutool.socket.nio;
import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.log.Log;
import cn.hutool.socket.SocketRuntimeException;
import java.io.Closeable;
@ -22,6 +23,8 @@ import java.util.Iterator;
*/
public class NioClient implements Closeable {
private static final Log log = Log.get();
private Selector selector;
private SocketChannel channel;
private ChannelHandler handler;
@ -91,7 +94,7 @@ public class NioClient implements Closeable {
try {
doListen();
} catch (IOException e) {
e.printStackTrace();
log.error("Listen failed", e);
}
});
}

View File

@ -58,6 +58,7 @@ public class NioServer implements Closeable {
// 服务器套接字注册到Selector中 并指定Selector监控连接事件
this.serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);
} catch (IOException e) {
close();
throw new IORuntimeException(e);
}
@ -140,7 +141,7 @@ public class NioServer implements Closeable {
handler.handle(socketChannel);
} catch (Exception e){
IoUtil.close(socketChannel);
StaticLog.error(e);
log.error(e);
}
}
}