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);
}
}
}
}
分享到:
相关推荐
前因 搭建一个网站传统的方法是...但是在Centos里面做开发调试环境,测试是用window的浏览器的,所以要用一个中间的web服务器做端口映射 Nginx端口映射配置 server { listen 80; server_name rbac.dev-lu.com; #
在这个特定的“Delphi工具源码 端口映射-代理源代码”中,我们可以深入探讨几个关键概念: 1. **端口映射**:端口映射是网络技术的一部分,允许不同网络之间的通信。在计算机网络中,一个端口映射是指将一个公共IP...
在Apache服务器中,端口映射和反向代理是两种重要的网络配置技术,它们用于管理和优化网站服务。本文将详细讲解如何在Apache服务器上设置这两种功能。 首先,端口映射(Port Mapping)允许我们将一个特定的外部端口...
3. 在 Source Port 中输入要转换到本地的端口:在隧道设置界面中,我们需要在 Source Port 中输入要转换到本地的端口号,这样我们可以将远程服务器上的端口映射到本地机器上。 4. 在 Destination 中输入目的地址及...
端口映射(Port Mapping)是网络连接中的一个重要概念,主要用在内网与外网交互的场景。...在使用过程中,用户需注意网络安全,避免未经授权的访问,同时合理规划和管理端口映射,以确保服务的稳定性和安全性。
端口映射作为一种重要的网络配置手段,能够帮助用户搭建内外网相互访问的环境,从而实现更高效的数据传输和服务共享。 #### 二、端口映射的基本概念 端口映射(Network Address Translation, NAT),是一种将私有网络...
端口映射通常用于代理服务器、分布式系统、虚拟机等场景,以便将外部请求转发到内部特定的服务或进程。 在Java中实现端口映射,主要可以利用Socket编程和NIO(非阻塞I/O)框架。以下是一些关键知识点: 1. **...
服务器端口映射 针对于代理服务器 非常好的东西
在本文中,我们将使用 Nginx 实现 IP 端口映射,访问 http://10.100.102.XXXX:8001 地址时,Nginx 将请求转发到本地服务启动的一个 Web 应用(Tomcat 部署下的一个应用http://10.100.108.XXXX:8080/test/index.jsp)...
总之,端口映射器通过提供自启动、自动映射和代理支持等功能,使得内网中的服务能够被外部网络有效地访问,极大地扩展了网络服务的可用性。通过合理使用和配置,可以解决很多由于NAT限制导致的网络连接问题。
综上所述,这个端口映射源代码可能是一个实现了TCP和UDP端口转发的代理服务,允许用户从外部网络访问内部网络服务,或者反之。源代码中的各个组件协同工作,处理网络连接、数据传输以及规则管理,为用户提供灵活且...
端口映射功能还可以完成一些特定代理功能,比如代理POP,SMTP,TELNET等协议。同时,端口映射也可以隐藏内部网络的拓扑结构,在一定程度上提高网络的安全性。 Windows端口映射是一种非常实用的技术,可以让外网用户...
NAT代理使得内部网络能够共享公网IP上网,而端口映射则允许我们对外发布内部服务器的应用和服务,这对于中小型企业来说是一种经济且实用的解决方案。正确配置和使用这些功能,可以有效地提升网络效率和安全性,同时...
本文将详细介绍局域网动态IP端口映射的实现方法,包括使用花生壳实现动态域名解析、使用PortTunnel实现端口映射和使用CCPROXY架设个人代理服务器。 一、使用花生壳实现动态域名解析 我们大多数人都是ADSL拨号上网...
最近做了个端口映射器_剑儿端口映射器_路由器端口映射器,可以不用上路由器就可以进行端口映射. 路由器端口映射 路由器端口映射工具 水星路由器端口映射 路由器设置端口映射 思科路由器端口映射 tp路由器端口映射 ...
端口映射列表是一个重要的网络概念,它是指在计算机网络中,用于标识不同的网络服务的端口号码。这些端口号码是由Internet Assigned Numbers Authority(IANA)负责分配的。 在本文档中,我们将详细介绍常见的端口...
易语言端口映射器源码,端口映射器,写入配置文件,读配置文件,添加树形框,写提示,填充属性框,填充列表,取父项目,窗口启动,窗口停止,树形框启动停止,取指定项目,取子项目,保存映射组,菜单取标题,TCP端口映射,TCP转发回...
通用端口映射通用代理工具PortTunnel目前最好的端口转发器、端口映射工具(外部计算机可以访问局部内的计算机HTTPFTP),TCPIP 端口重定向记录。通过在服务器安装运行此程序, 可以使因特网上的计算机访问局部网内的...
旧版的端口映射工具可能只支持TCP协议,这在很多情况下已经足够,但对于需要高效、低延迟通信的应用,如在线游戏、VoIP服务或者流媒体,UDP端口映射就显得尤为重要。因为UDP的特性,它更适合这些对实时性要求高的...