add connect

This commit is contained in:
Looly 2021-08-11 12:02:40 +08:00
parent 6dc8524e69
commit 25e10f04d1
2 changed files with 60 additions and 7 deletions

View File

@ -3,7 +3,7 @@
-------------------------------------------------------------------------------------------------------------
# 5.7.8 (2021-08-10)
# 5.7.8 (2021-08-11)
### 🐣新特性
* 【core 】 MapProxy支持return this的setter方法pr#392@Gitee
@ -12,6 +12,7 @@
* 【json 】 增加JSONBeanParser
* 【poi 】 增加CellSetter可以自定义单元格值写出
* 【poi 】 CsvReader增加readFromStrpr#1755@Github
* 【socket 】 SocketUtil增加connection方法
### 🐞Bug修复
* 【core 】 改进NumberChineseFormatter算法补充完整单元测试解决零问题

View File

@ -1,12 +1,14 @@
package cn.hutool.socket;
import cn.hutool.core.io.IORuntimeException;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.nio.channels.AsynchronousSocketChannel;
import java.nio.channels.ClosedChannelException;
import cn.hutool.core.io.IORuntimeException;
/**
* Socket相关工具类
*
@ -43,4 +45,54 @@ public class SocketUtil {
public static boolean isConnected(AsynchronousSocketChannel channel) {
return null != getRemoteAddress(channel);
}
/**
* 创建Socket并连接到指定地址的服务器
*
* @param hostname 地址
* @param port 端口
* @return {@link Socket}
* @throws IORuntimeException IO异常
* @since 5.7.8
*/
public static Socket connect(String hostname, int port) throws IORuntimeException {
return connect(hostname, port, -1);
}
/**
* 创建Socket并连接到指定地址的服务器
*
* @param hostname 地址
* @param port 端口
* @param connectionTimeout 连接超时
* @return {@link Socket}
* @throws IORuntimeException IO异常
* @since 5.7.8
*/
public static Socket connect(final String hostname, int port, int connectionTimeout) throws IORuntimeException {
return connect(new InetSocketAddress(hostname, port), connectionTimeout);
}
/**
* 创建Socket并连接到指定地址的服务器
*
* @param address 地址
* @param connectionTimeout 连接超时
* @return {@link Socket}
* @throws IORuntimeException IO异常
* @since 5.7.8
*/
public static Socket connect(InetSocketAddress address, int connectionTimeout) throws IORuntimeException {
final Socket socket = new Socket();
try {
if (connectionTimeout <= 0) {
socket.connect(address);
} else {
socket.connect(address, connectionTimeout);
}
} catch (IOException e) {
throw new IORuntimeException(e);
}
return socket;
}
}