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

做网站营销怎么去推广在线画图工具

做网站营销怎么去推广,在线画图工具,凡科网站案例,网站备案 ip实现逻辑就是转发请求和响应。 核心代码 // 启动代理服务器private void startProxyServer() {new Thread(new ProxyServer()).start();}// 代理服务器static class ProxyServer implements Runnable {Overridepublic void run() {try {// 监听指定的端口int port 8098; //一…

实现逻辑就是转发请求和响应。 

核心代码

// 启动代理服务器private void startProxyServer() {new Thread(new ProxyServer()).start();}// 代理服务器static class ProxyServer implements Runnable {@Overridepublic void run() {try {// 监听指定的端口int port = 8098; //一般使用49152到65535之间的端口ServerSocket server = new ServerSocket(port);// 当一个ServerSocket关闭并释放其绑定的端口后,操作系统通常会在几分钟内不允许其他Socket再次绑定到该端口。// true:操作系统将允许其他Socket立即绑定到刚刚被释放的端口。server.setReuseAddress(true);// 使用线程池,防止过多线程耗尽资源ExecutorService threadPool = Executors.newFixedThreadPool(50);while (true) {Socket socket = server.accept(); //会一直阻塞,直到有客户端连接进来// new Thread 只是创建一个类的对象实例而已。而真正创建线程的是start()方法。// 这里并没有直接调用start()方法,所以并没创建新线程,而是交给线程池去执行。threadPool.submit(new ProxyClient(socket));}} catch (Exception e) {Log.e("ProxyServer", e.getMessage(), e);}}}// 代理客户端static class ProxyClient implements Runnable {private final Socket proxySocket;//代理Socketprivate Socket targetSocket = null;//目标Socketpublic ProxyClient(Socket socket) {this.proxySocket = socket;}@Overridepublic void run() {try {//客户端请求的报文InputStream req = proxySocket.getInputStream();int read;int contentLength = 0;//body长度String method = null;//请求方法String url = null;//请求地址String protocol = null;//请求协议ByteArrayOutputStream os = new ByteArrayOutputStream();ByteArrayOutputStream reqBack = new ByteArrayOutputStream();//解析,提取请求报文while ((read = req.read()) != -1) {os.write(read);reqBack.write(read);if (read == '\n') {//CONNECT www.xx.com:443/xx/yy HTTP/1.1String line = os.toString("UTF-8");os.reset();//重置,以便再次使用if ("\r\n".equals(line)) {//空行,请求头结束标志break;}StringTokenizer stringTokenizer = new StringTokenizer(line, " ");if (method == null) {//八种请求方法:GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT 方法method = stringTokenizer.nextToken().toLowerCase();//connecturl = stringTokenizer.nextToken();//www.xx.com:443/xx/yyprotocol = stringTokenizer.nextToken().trim();//HTTP/1.1} else {String key = stringTokenizer.nextToken().toLowerCase();if ("content-length:".equals(key)) {String value = stringTokenizer.nextToken().trim();contentLength = Integer.parseInt(value);}}}}if (contentLength > 0) {for (int i = 0; i < contentLength; i++) {reqBack.write(req.read());}}//完整请求报文// String request = reqBack.toString("UTF-8");// System.out.println("请求报文开始");// System.out.print(request);// System.out.println("\r\n请求报文结束");//拼接完整urlif (url != null && !url.startsWith("http")) {url = method.equals("connect") ? "https://" + url : "http://" + url;}URL u = new URL(url);//目标ipString targetHost = u.getHost();//目标端口int targetPort = u.getPort();if (targetPort == -1) {targetPort = 80;}//目标SockettargetSocket = new Socket(targetHost, targetPort);if ("connect".equals(method)) {//https//HTTP/1.1 200 Connection established//报文直接发送给代理SocketOutputStream outputStream = proxySocket.getOutputStream();outputStream.write((protocol + " 200 Connection established\r\n").getBytes(StandardCharsets.UTF_8));outputStream.write("Proxy-agent: ProxyServer/1.0\r\n".getBytes(StandardCharsets.UTF_8));outputStream.write("\r\n".getBytes(StandardCharsets.UTF_8));outputStream.flush();//前者转发给后者,代理Socket转发给目标SocketThread proxy2target = new Thread(new ForwardData(proxySocket, targetSocket));proxy2target.start();//前者转发给后者,目标Socket转发给代理SocketThread target2proxy = new Thread(new ForwardData(targetSocket, proxySocket));target2proxy.start();proxy2target.join();} else {//http//请求报文转发给目标SocketOutputStream outputStream = targetSocket.getOutputStream();outputStream.write(reqBack.toByteArray());outputStream.flush();//前者转发给后者,目标Socket转发给代理SocketThread thread = new Thread(new ForwardData(targetSocket, proxySocket));thread.start();thread.join();}} catch (Exception e) {Log.e("ProxyClient", e.getMessage(), e);} finally {try {if (targetSocket != null) {targetSocket.close();}} catch (IOException e) {Log.e("ProxyClient", e.getMessage(), e);}try {if (proxySocket != null) {proxySocket.close();}} catch (IOException e) {Log.e("ProxyClient", e.getMessage(), e);}}// Log.e("ProxyClient", "结束");}// 转发数据static class ForwardData implements Runnable {private final Socket inputSocket;private final Socket outputSocket;public ForwardData(Socket inputSocket, Socket outputSocket) {this.inputSocket = inputSocket;this.outputSocket = outputSocket;}@Overridepublic void run() {try {InputStream inputStream = inputSocket.getInputStream();OutputStream outputStream = outputSocket.getOutputStream();int read;while ((read = inputStream.read()) != -1) {outputStream.write(read);}} catch (Exception e) {// Log.e("ForwardData", inputSocket + e.getMessage());}}}}

app源码

proxyserver: 代理服务器app

我已打包,打包地址:https://gitee.com/gloweds/proxyserver/raw/master/app/release/app-release.apk

有时会报错,但是这个错误不影响功能。

报错时间线如下:

2023-10-06 11:29:16.478 客户端请求结束(发起http请求)
2023-10-06 11:29:16.555 代理proxySocket的read()报错 Connection reset
2023-10-06 11:29:16.571 关闭两个Socket连接
2023-10-06 11:29:16.571 目标targetSocket的read()报错 Socket closed

上面报错的原因,是因为客户端请求发送报文没有完整发送结束标识-1,
如果客户端完整发送结束标识,上面的两个错误不会发生(Connection reset、Socket closed),但是这个错误不影响功能,可以不用处理。

代理proxySocket的read()报错 Connection reset,是因为客户端未完整发送结束标识-1,而客户端请求都结束了,也成功拿到了响应数据,这时关闭连接就导致代理proxySocket的read()报错 Connection reset。

目标targetSocket的read()报错 Socket closed,因为前面代理proxySocket的read()阻塞未正常发送结束标识,所以targetSocket的read()也阻塞了,关闭两个proxySocket和targetSocket连接后,targetSocket的read()自然报错Socket closed连接被强制关闭了。

https请求流程图:

 

http://www.yayakq.cn/news/326332/

相关文章:

  • 网站做违法的事情投诉把做的网站发布打万维网上
  • 现在做网站用什么软件微信小程序开发工具怎么用
  • 广东网站建设哪家专业天台县低价网站建设
  • 旅游网站开发需求文档模板网页设计网站网站建设课程设计
  • 阳西哪里有做网站拉新工作室在哪里接项目
  • 网站做几级等保设计公司灰白色调网站
  • 做cpa用什么网站邯郸做移动网站找谁
  • 上海比较好的网站建设公司全部免费网站软件
  • 长沙营销型网站建设网站建设如何存数据
  • 律师网站建设方案广州自助网站推广制作
  • 瑞安专业网站建设阿里邮箱企业版app下载
  • 网站建设服资讯网站做app
  • 门户网站兴化建设局 金宁波网站建设最好
  • 浙江住房和城乡建设网站铜陵电子商务网站建设
  • 一般网站服务器配置网站上传的图片不显示
  • 深圳医疗网站建设码制作二维码官网
  • 网站开发的形式是郑州网站推广优化外包公司
  • 临沂的各类网站建设河南省新闻出版学校怎么样
  • 浙江省建设厅干部学校门户网站鄞州区建设局网站
  • 网站半年了 没有流量个人主页设计模板图片
  • 郑州网站设计费用非凡网站建设平台网页
  • 阿里巴巴网站网络营销的平台如何利用社交网站做招聘
  • 天津品牌网站建设做视频网站的方法
  • wordpress网站变灰seo推广主要做什么
  • 平台和自建网站服务提供者wordpress用多大主机
  • 网站设计编程网站分享到朋友圈代码
  • 烟台环保网站建设哪个素材网站做美工最好
  • 公司网站后台管理教程微信开放平台怎么注册
  • 长沙企业网站制作移动深圳网站
  • 怎么用ai做企业网站框架公司推广做哪个网站吗