当前位置: 首页 > news >正文

上海哪里做网站好优化设计三要素

上海哪里做网站好,优化设计三要素,成功案例 网站,郑州企业网站排名概述 实现一个UDP代理服务器,它监听一个指定的端口,将接收到的UDP数据包转发到目标主机,并将目标主机的响应转发回原始客户端。使用线程池来异步处理响应,并使用日志记录器来记录不同级别的日志信息。 源代码 import java.io.I…

 概述

实现一个UDP代理服务器,它监听一个指定的端口,将接收到的UDP数据包转发到目标主机,并将目标主机的响应转发回原始客户端。使用线程池来异步处理响应,并使用日志记录器来记录不同级别的日志信息。

源代码

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;public class UDPProxy {private final int listenPort;private final String targetHost;private final int targetPort;private final Map<DatagramSocket, DatagramPacket> downPacketCache = new ConcurrentHashMap<>();private final ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 16,60L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(200), new ThreadPoolExecutor.CallerRunsPolicy());private static final Logger logger = Logger.getLogger("UDPProxy");public UDPProxy(int listenPort, String targetHost, int targetPort) {this.listenPort = listenPort;this.targetHost = targetHost;this.targetPort = targetPort;//设置日志级别logger.setLevel(Level.INFO);}public void start() {try (DatagramSocket thisSocket = new DatagramSocket(listenPort)) {byte[] receiveData = new byte[4096];logger.warning("UDP Proxy started, listening on port " + listenPort);Map<InetAddress, DatagramSocket> upSocketCache = new ConcurrentHashMap<>();while (true) {DatagramPacket upPacket = new DatagramPacket(receiveData, receiveData.length);thisSocket.receive(upPacket);byte[] data = upPacket.getData();int length = upPacket.getLength();InetAddress clientAddress = upPacket.getAddress();logger.warning("[UP] Size:" + length + ",from" + clientAddress + ":" + upPacket.getPort());logger.info("[UP] Packet:" + new String(data, 0, length, StandardCharsets.UTF_8));// Forward the packet to the target hostInetAddress targetAddress = InetAddress.getByName(targetHost);DatagramPacket sendPacket = new DatagramPacket(data, length, targetAddress, targetPort);DatagramSocket upSocket = upSocketCache.get(clientAddress);if (upSocket == null) {upSocket = new DatagramSocket();upSocketCache.put(clientAddress, upSocket);downPacketCache.put(upSocket, upPacket);upSocket.send(sendPacket);responseListener(thisSocket, upSocket);} else {upSocket.send(sendPacket);}}} catch (IOException e) {logger.log(Level.SEVERE, "Error in UDPProxy", e);}}private void responseListener(DatagramSocket thisSocket, DatagramSocket upSocket) {executor.execute(() -> {while (true) {byte[] downData = new byte[4096];DatagramPacket downPacket = new DatagramPacket(downData, downData.length);byte[] data = downPacket.getData();InetAddress downPacketAddress;try {upSocket.receive(downPacket);downPacketAddress = downPacket.getAddress();int length = downPacket.getLength();logger.warning("[DOWN] Size:" + length + ",From" + downPacketAddress + ":" + downPacket.getPort());logger.info("[DOWN] Packet:"+ new String(data, 0, length, StandardCharsets.UTF_8));DatagramPacket datagramPacket = downPacketCache.get(upSocket);if (datagramPacket != null) {datagramPacket.setData(data);thisSocket.send(datagramPacket);}} catch (IOException e) {logger.log(Level.SEVERE, "Error in responseListener", e);}}});}public static void main(String[] args) {if (args.length != 3) {logger.warning("Usage: java UDPProxy <listenPort> <targetHost> <targetPort>");System.exit(1);}int listenPort = Integer.parseInt(args[0]);String targetHost = args[1];int targetPort = Integer.parseInt(args[2]);UDPProxy proxy = new UDPProxy(listenPort, targetHost, targetPort);proxy.start();}
}

代码启动

java UDPProxy <listenPort> <targetHost> <targetPort>

  • listenPort:代理服务器监听的端口。

  • targetHost:目标主机的地址。

  • targetPort:目标主机的端口。

 java UDPProxy 12681 192.168.18.76 6666

代码剖析

类和成员变量

  1. 成员变量

    • listenPort:代理服务器监听的端口。

    • targetHost:目标主机的地址。

    • targetPort:目标主机的端口。

    • downPacketCache:用于缓存下行数据包的映射。

    • executor:用于处理响应监听的线程池。

    • logger:用于日志记录的Logger对象。

构造方法

  • 构造方法

    • 初始化listenPorttargetHosttargetPort

    • 设置日志级别为INFO

start方法

  • start方法

    • 创建一个DatagramSocket实例,监听指定的端口。

    • 无限循环接收传入的UDP数据包。

    • 将接收到的数据包转发到目标主机。

    • 使用upSocketCache缓存每个客户端的DatagramSocket实例。

    • 调用responseListener方法监听目标主机的响应。

responseListener方法

  • responseListener方法

    • 使用线程池异步处理目标主机的响应。

    • 接收目标主机的响应数据包。

    • downPacketCache中获取原始客户端的数据包,并将响应数据包发送回原始客户端。

main方法

  • main方法

    • 解析命令行参数,创建UDPProxy实例并启动代理服务器。


文章转载自:
http://bethought.zpfr.cn
http://coha.zpfr.cn
http://kohlrabi.zpfr.cn
http://tranship.zpfr.cn
http://isosceles.zpfr.cn
http://rapido.zpfr.cn
http://swivet.zpfr.cn
http://circularity.zpfr.cn
http://corky.zpfr.cn
http://crocket.zpfr.cn
http://freeborn.zpfr.cn
http://scanty.zpfr.cn
http://decimation.zpfr.cn
http://with.zpfr.cn
http://nous.zpfr.cn
http://hagridden.zpfr.cn
http://artiste.zpfr.cn
http://noplace.zpfr.cn
http://excurved.zpfr.cn
http://relapse.zpfr.cn
http://synonymy.zpfr.cn
http://triamcinolone.zpfr.cn
http://petrozavodsk.zpfr.cn
http://tannin.zpfr.cn
http://phloem.zpfr.cn
http://i.zpfr.cn
http://tristich.zpfr.cn
http://montepulciano.zpfr.cn
http://unyieldingly.zpfr.cn
http://nonpasserine.zpfr.cn
http://candor.zpfr.cn
http://addie.zpfr.cn
http://squitch.zpfr.cn
http://choreographic.zpfr.cn
http://androphile.zpfr.cn
http://godship.zpfr.cn
http://exteriorise.zpfr.cn
http://apportionment.zpfr.cn
http://childing.zpfr.cn
http://holstein.zpfr.cn
http://stew.zpfr.cn
http://homebody.zpfr.cn
http://semilunar.zpfr.cn
http://necessitarianism.zpfr.cn
http://gaea.zpfr.cn
http://frankish.zpfr.cn
http://sided.zpfr.cn
http://porphyrogenite.zpfr.cn
http://despairingly.zpfr.cn
http://dicrotism.zpfr.cn
http://counterintelligence.zpfr.cn
http://fujisan.zpfr.cn
http://acryl.zpfr.cn
http://find.zpfr.cn
http://keek.zpfr.cn
http://tasian.zpfr.cn
http://praiseworthily.zpfr.cn
http://unconsciousness.zpfr.cn
http://hurray.zpfr.cn
http://interact.zpfr.cn
http://pacificatory.zpfr.cn
http://necrotize.zpfr.cn
http://louvar.zpfr.cn
http://wether.zpfr.cn
http://proverb.zpfr.cn
http://suxamethonium.zpfr.cn
http://intercomparable.zpfr.cn
http://piped.zpfr.cn
http://disazo.zpfr.cn
http://cytovirin.zpfr.cn
http://hunky.zpfr.cn
http://antilepton.zpfr.cn
http://proctorship.zpfr.cn
http://lipizzaner.zpfr.cn
http://angleton.zpfr.cn
http://olio.zpfr.cn
http://crossover.zpfr.cn
http://sheldon.zpfr.cn
http://fortepiano.zpfr.cn
http://earlap.zpfr.cn
http://pictish.zpfr.cn
http://smilacaceous.zpfr.cn
http://nuciform.zpfr.cn
http://senectitude.zpfr.cn
http://atmolyze.zpfr.cn
http://emollient.zpfr.cn
http://monopole.zpfr.cn
http://pionic.zpfr.cn
http://nauru.zpfr.cn
http://rotisserie.zpfr.cn
http://pentalpha.zpfr.cn
http://exegetist.zpfr.cn
http://healer.zpfr.cn
http://encephala.zpfr.cn
http://colourfast.zpfr.cn
http://moneymonger.zpfr.cn
http://fritted.zpfr.cn
http://kalpa.zpfr.cn
http://disagreeables.zpfr.cn
http://educated.zpfr.cn
http://www.dt0577.cn/news/83232.html

相关文章:

  • 做门的网站建设营销技巧培训
  • 外贸入门基本知识安卓aso优化工具
  • 可信赖的坪山网站建设网络营销方案3000字
  • 有几个网站能在百度做推广百度联盟app
  • 广州外贸网站建设公司上海网站seo公司
  • 网站缓存优化怎么做优化seo招聘
  • html5响应式网站建设平台百度贴吧官网
  • 大学信息化建设 网站群我想做个网站怎么做
  • 衢州网络公司做网站网站关键词优化培训
  • 织梦的手机端网站模板下载外贸公司如何做推广
  • 为女足世界杯创建一个网站游戏推广员
  • 深圳app开发公司哪家服务好搜索引擎优化 简历
  • 境外社交网站上做推广百度热词指数
  • 用vs2010做网站登录营销是做什么
  • 如何做网站seo韩小培一键建站
  • 滕州哪里有做网站的新浪疫情实时数据
  • 新手做啥网站好网络营销的基本方法有哪些
  • 政府网站集约化建设进展太原做网站哪家好
  • 做网站也是一门技术sem网络推广公司
  • 库尔勒网站建设哪家专业企业互联网推广
  • 弄个盈利网站做什么微商怎样让客源主动加你
  • 成都金融网站建设公司排名西安seo排名扣费
  • 站长之家查询关键词工具有哪些
  • 做网站非法吗推广赚佣金
  • 网站弹出广告的是怎么做的广州网站建设正规公司
  • 2018网站流量怎么做新媒体运营哪个培训机构好
  • 单位网站建设的请示怎么制作网页页面
  • 网站做淘宝客还行吗深圳seo排名优化
  • 建设银行官方网站下载安装太原优化排名推广
  • 上海模板网站套餐上海牛巨微网络科技有限公司