`

代理服务-端口映射

阅读更多

import   java.io.*;  
import   java.net.*;
public class ProxySocket
{
 private ServerSocket listenerSocket;
 private Socket serverSocket;
 public ProxySocket()
 {
  try
  {
   System.out.println("服务器启动");//代理程序启动
   this.listenerSocket = new ServerSocket(9633);//代理端口
   while (true)
   {
    try
    {
     this.serverSocket = this.listenerSocket.accept();
     new MyThread(serverSocket).start();//启动一个线程进行监听
    }
    catch (Exception e)
    {
     System.out.println(e);
    }
   }
  }
  catch (Exception e)
  {
   System.out.println(e);
  }
 }
 public static void main(String args[])//程序入口
 {
  new ProxySocket();//初始化代理类,代理程序启动
 }
 class MyThread extends Thread
 {
  private Socket threadSocket;//
  private Socket tomcatSocket;//
  private Thread myThread;
  private DataInputStream in;//输入流
  private DataOutputStream out;//输出流
  public MyThread(Socket socket)
  {
   try
   {
    threadSocket = socket;
    this.tomcatSocket = new Socket("127.0.0.1", 8080);//实际ip地址,端口号
   }
   catch (Exception e)
   {
    System.out.println(e);
   }
  }
  public void run()
  {
   try
   {
    //读取线程 
    new ReadClientWriteTomcatThread(threadSocket, tomcatSocket).start();
   }
   catch (Exception e)
   {
    System.out.println(e);
   }
  }
 }
 class ReadClientWriteTomcatThread extends Thread//读取客户端数据写入系统类
 {
  private DataInputStream read;//输入流
  private DataOutputStream write;//输出流
  private ByteArrayOutputStream swapStream;//字节流
  private Socket threadSocket;
  private Socket tomcatSocket;
  public ReadClientWriteTomcatThread(Socket threadSocketT, Socket tomcatSocketT)
  {
   try
   {
    threadSocket = threadSocketT;
    tomcatSocket = tomcatSocketT;
    read = new DataInputStream(threadSocket.getInputStream());
    write = new DataOutputStream(tomcatSocket.getOutputStream());
    this.swapStream = new ByteArrayOutputStream();
   }
   catch (Exception e)
   {
    System.out.println(e);
   }
  }
  public void run()
  {
   try
   {
    byte[] buf = new byte[100];
    int rc = 0;
    while ((rc = read.read(buf, 0, buf.length)) > 0)//循环读取客户段数据
    {
     this.swapStream.write(buf, 0, rc);
     this.swapStream.flush();
     if (rc < buf.length)
     {
      break;
     }
     //System.out.println(rc);  
    }
    byte[] resBuf = swapStream.toByteArray();
    this.write.write(resBuf, 0, resBuf.length);
    this.write.flush();//输入给系统
    //初始化线程,等待从系统中读取结果
    new ReadTomcatWriteClientThread(threadSocket, tomcatSocket).start();

   }
   catch (Exception e)
   {
    System.out.println(e);
   }
  }
 }
 class ReadTomcatWriteClientThread extends Thread//读取系统数据写入客户端类
 {
  private DataInputStream read;//输入流
  private DataOutputStream write;//输出流
  private ByteArrayOutputStream swapStream;//字节流
  public ReadTomcatWriteClientThread(Socket threadSocket, Socket tomcatSocket)
  {
   try
   {
    read = new DataInputStream(tomcatSocket.getInputStream());//初始化读取系统中数据输入流
    write = new DataOutputStream(threadSocket.getOutputStream());//初始化写入客户端的输出流
    this.swapStream = new ByteArrayOutputStream();//初始化字节流
   }
   catch (Exception e)
   {
    System.out.println(e);
   }
  }
  public void run()
  {
   try
   {
    byte[] buf2 = new byte[100];
    int rc2 = 0;
    while ((rc2 = read.read(buf2, 0, buf2.length)) > 0)//循环读取系统数据
    {
     this.swapStream.write(buf2, 0, rc2);
     this.swapStream.flush();
     if (rc2 < buf2.length)
     {
      break;
     }
    }
    byte[] resBuf2 = swapStream.toByteArray();
    this.write = new DataOutputStream(write);
    this.write.write(resBuf2, 0, resBuf2.length);
    this.write.flush();//输出数据
    this.write.close();
    this.read.close();
   }
   catch (Exception e)
   {
    System.out.println(e);
   }
  }
 }
}  

分享到:
评论

相关推荐

    Nginx端口映射配置方法

    前因 搭建一个网站传统的方法是...但是在Centos里面做开发调试环境,测试是用window的浏览器的,所以要用一个中间的web服务器做端口映射 Nginx端口映射配置 server { listen 80; server_name rbac.dev-lu.com; #

    Delphi工具源码 端口映射-代理源代码

    在这个特定的“Delphi工具源码 端口映射-代理源代码”中,我们可以深入探讨几个关键概念: 1. **端口映射**:端口映射是网络技术的一部分,允许不同网络之间的通信。在计算机网络中,一个端口映射是指将一个公共IP...

    Apache服务器中设置端口映射和反向代理的方法.docx

    在Apache服务器中,端口映射和反向代理是两种重要的网络配置技术,它们用于管理和优化网站服务。本文将详细讲解如何在Apache服务器上设置这两种功能。 首先,端口映射(Port Mapping)允许我们将一个特定的外部端口...

    putty代理设置,映射远程服务器端口至本地

    3. 在 Source Port 中输入要转换到本地的端口:在隧道设置界面中,我们需要在 Source Port 中输入要转换到本地的端口号,这样我们可以将远程服务器上的端口映射到本地机器上。 4. 在 Destination 中输入目的地址及...

    \端口映射portmap1.6

    端口映射(Port Mapping)是网络连接中的一个重要概念,主要用在内网与外网交互的场景。...在使用过程中,用户需注意网络安全,避免未经授权的访问,同时合理规划和管理端口映射,以确保服务的稳定性和安全性。

    路由器端口映射

    端口映射作为一种重要的网络配置手段,能够帮助用户搭建内外网相互访问的环境,从而实现更高效的数据传输和服务共享。 #### 二、端口映射的基本概念 端口映射(Network Address Translation, NAT),是一种将私有网络...

    Java 端口映射

    端口映射通常用于代理服务器、分布式系统、虚拟机等场景,以便将外部请求转发到内部特定的服务或进程。 在Java中实现端口映射,主要可以利用Socket编程和NIO(非阻塞I/O)框架。以下是一些关键知识点: 1. **...

    服务器端口映射 针对于代理服务器

    服务器端口映射 针对于代理服务器 非常好的东西

    nginx 端口映射

    在本文中,我们将使用 Nginx 实现 IP 端口映射,访问 http://10.100.102.XXXX:8001 地址时,Nginx 将请求转发到本地服务启动的一个 Web 应用(Tomcat 部署下的一个应用http://10.100.108.XXXX:8080/test/index.jsp)...

    端口映射器

    总之,端口映射器通过提供自启动、自动映射和代理支持等功能,使得内网中的服务能够被外部网络有效地访问,极大地扩展了网络服务的可用性。通过合理使用和配置,可以解决很多由于NAT限制导致的网络连接问题。

    TCP UDP端口映射源代码

    综上所述,这个端口映射源代码可能是一个实现了TCP和UDP端口转发的代理服务,允许用户从外部网络访问内部网络服务,或者反之。源代码中的各个组件协同工作,处理网络连接、数据传输以及规则管理,为用户提供灵活且...

    Windows端口映射实现外网访问内网 端口映射.doc

    端口映射功能还可以完成一些特定代理功能,比如代理POP,SMTP,TELNET等协议。同时,端口映射也可以隐藏内部网络的拓扑结构,在一定程度上提高网络的安全性。 Windows端口映射是一种非常实用的技术,可以让外网用户...

    2003 路由与远程访问端口映射

    NAT代理使得内部网络能够共享公网IP上网,而端口映射则允许我们对外发布内部服务器的应用和服务,这对于中小型企业来说是一种经济且实用的解决方案。正确配置和使用这些功能,可以有效地提升网络效率和安全性,同时...

    局域网动态IP端口映射.pdf

    本文将详细介绍局域网动态IP端口映射的实现方法,包括使用花生壳实现动态域名解析、使用PortTunnel实现端口映射和使用CCPROXY架设个人代理服务器。 一、使用花生壳实现动态域名解析 我们大多数人都是ADSL拨号上网...

    端口映射器_路由器端口映射器

    最近做了个端口映射器_剑儿端口映射器_路由器端口映射器,可以不用上路由器就可以进行端口映射. 路由器端口映射 路由器端口映射工具 水星路由器端口映射 路由器设置端口映射 思科路由器端口映射 tp路由器端口映射 ...

    端口映射列表[参考].pdf

    端口映射列表是一个重要的网络概念,它是指在计算机网络中,用于标识不同的网络服务的端口号码。这些端口号码是由Internet Assigned Numbers Authority(IANA)负责分配的。 在本文档中,我们将详细介绍常见的端口...

    易语言端口映射器

    易语言端口映射器源码,端口映射器,写入配置文件,读配置文件,添加树形框,写提示,填充属性框,填充列表,取父项目,窗口启动,窗口停止,树形框启动停止,取指定项目,取子项目,保存映射组,菜单取标题,TCP端口映射,TCP转发回...

    端口映射通用代理工具Port

    通用端口映射通用代理工具PortTunnel目前最好的端口转发器、端口映射工具(外部计算机可以访问局部内的计算机HTTPFTP),TCPIP 端口重定向记录。通过在服务器安装运行此程序, 可以使因特网上的计算机访问局部网内的...

    最新版的带UDP端口映射工具

    旧版的端口映射工具可能只支持TCP协议,这在很多情况下已经足够,但对于需要高效、低延迟通信的应用,如在线游戏、VoIP服务或者流媒体,UDP端口映射就显得尤为重要。因为UDP的特性,它更适合这些对实时性要求高的...

Global site tag (gtag.js) - Google Analytics