Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
java 网络_java适配器模式,希望能够帮助你!!!。
Don’t say much, just go to the code.
package org.bood.shimmer.common.utils; import org.springframework.util.MultiValueMap; import org.springframework.web.util.UriComponentsBuilder; import javax.net.ssl.HttpsURLConnection; import javax.servlet.http.HttpServletRequest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.*; /** * 网络工具包 * * @author bood * @since 2020/9/25 */ public class NetUtils {
private NetUtils() {
} /** * <p> * 获取请求中的 IP * </p> * * @param request: * @return:java.lang.String * @author:bood * @date:2020/9/25 */ public static String getIpAddress(HttpServletRequest request) {
String[] ipHeaders = {
"x-forwarded-for", "Proxy-Client-IP", "WL-Proxy-Client-IP", "HTTP_CLIENT_IP", "HTTP_X_FORWARDED_FOR"}; String[] localhostIp = {
"127.0.0.1", "0:0:0:0:0:0:0:1"}; String ip = request.getRemoteAddr(); for (String header : ipHeaders) {
if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
break; } ip = request.getHeader(header); } for (String local : localhostIp) {
if (ip != null && ip.equals(local)) {
try {
ip = InetAddress.getLocalHost().getHostAddress(); } catch (UnknownHostException ignored) {
} break; } } if (ip != null && ip.length() > 15 && ip.contains(",")) {
ip = ip.substring(0, ip.indexOf(',')); } return ip; } /** * <p> * IP 转 Integer * </p> * * @param ip: IP 地址 * @return:java.lang.Integer * @author:bood * @date:2020/9/25 */ public static Integer ipToInteger(String ip) {
String[] ips = ip.split("\\."); int ipFour = 0; for (String ip4 : ips) {
Integer ip4a = Integer.parseInt(ip4); ipFour = (ipFour << 8) | ip4a; } return ipFour; } /** * <p> * Integer 转 IP * </p> * * @param ip: IP 地址 * @return:java.lang.String * @author:bood * @date:2020/9/25 */ public static String IntegerToIp(Integer ip) {
StringBuilder sb = new StringBuilder(); for (int i = 3; i >= 0; i--) {
int ipa = (ip >> (8 * i)) & (0xff); sb.append(ipa + "."); } sb.delete(sb.length() - 1, sb.length()); return sb.toString(); } /** * <p> * IP 地址是否可达 * </p> * * @param ip: IP 地址 * @return:boolean * @author:bood * @date:2020/9/25 */ public static boolean isReachable(String ip) {
InetAddress address; try {
address = InetAddress.getByName(ip); if (address.isReachable(5000)) {
return true; } } catch (IOException e) {
e.printStackTrace(); } return false; } /** * <p> * 根据 url 和请求参数获取 URI * </p> * * @param url: 请求地址 * @param params: 请求参数 * @return:java.net.URI * @author:bood * @date:2020/9/25 */ public static URI getURIwithParams(String url, MultiValueMap<String, String> params) {
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url).queryParams(params); return builder.build().encode().toUri(); } /** * <p> * 判断网址是否有效 * 对于404页面,如果被电信或者联通劫持了,也会返回200的状态,这个是不准确的 * </p> * * @param url: 请求地址 * @return:boolean * @author:bood * @date:2020/9/25 */ public static boolean isReachable(URL url) {
boolean reachable = false; HttpURLConnection httpconn = null; HttpsURLConnection httpsconn = null; int code = 0; try {
if ("https".equals(url.getProtocol())) {
httpsconn = (HttpsURLConnection) url.openConnection(); code = httpsconn.getResponseCode(); } else {
httpconn = (HttpURLConnection) url.openConnection(); code = httpconn.getResponseCode(); } if (code == 200) {
reachable = true; } } catch (Exception e) {
reachable = false; } return reachable; } /** * <p> * 实现 Ping 命令 * Ping 的字符串换行使用 java 的换行符"\n",如果 ping 不同返回 null * </p> * * @param ip: IP 地址 * @return:java.lang.String * @author:bood * @date:2020/9/25 */ public static String ping(String ip) {
String res = ""; String line = null; try {
Process pro = Runtime.getRuntime().exec("ping " + ip); BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream(), "GBK")); while ((line = buf.readLine()) != null) {
if (!"".equals(line)) {
res += line + "\n"; } } } catch (Exception e) {
res = null; } return res; } }
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。