最好方案:使用haproxy 或者nginx转发。自己写程序性能和监控难保证,推荐使用开源软件替代。

源地址为:http://baishaobin2003.blog.163.com/blog/static/57381812201332355422107/

Socket在使用过程中往往会出现这样的问题
在生产的机器有一个服务,但是测试环境不能连接生产
中间有一台公共机可以连接两台机器,
这种情况下需要用到一个Socket桥
测试机器发送数据到公共机上,然后从公共机上发送数据到生产机器,由生产机返回数据到公共机,在有公共机转发回来测试机上来

=================================================================================AGClientBase.java
=================================================================================
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;public class AGClientBase {Socket socket = null;InputStream is = null;OutputStream os = null;String tCode = null;public String testClient(String data) {try {// 建立连接socket = new Socket(getValueByKey.readValue("IpAddrss"), Integer.valueOf(getValueByKey.readValue("Port")).intValue());// 发送数据os = socket.getOutputStream();os.write(data.getBytes());// 接收数据is = socket.getInputStream();byte[] b = new byte[4000];is.read(b);return new String(b).trim();} catch (Exception e) {System.out.println("连接异常,请检查配置文件或对方Socket连接");return null;} finally {try {// 关闭流和连接
    is.close();os.close();socket.close();} catch (Exception e2) {}}}}
======================================================================================================LinkServer.java
======================================================================================================
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket; public class LinkServer { public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(10000); while (true) { Socket socket = server.accept();invoke(socket); } } private static void invoke(final Socket socket) throws IOException { new Thread(new Runnable() { public void run() { AGClientBase ag = new AGClientBase();BufferedReader in = null; PrintWriter out = null; try { InputStream inputStream = socket.getInputStream();OutputStream outputStream = socket.getOutputStream();byte[] arry = new byte[4000];while(true){inputStream.read(arry);outputStream.write(ag.testClient(new String(arry)).getBytes());outputStream.flush();socket.close(); } } catch(IOException ex) { // ex.printStackTrace(); } finally { try { in.close(); } catch (Exception e) {} try { out.close(); } catch (Exception e) {} try { socket.close(); } catch (Exception e) {} } } }).start(); }
}
======================================================================================================LinkService.java
======================================================================================================
public interface LinkService {public String reMsg();public String reMsg(String repmsg);
}======================================================================================================getValueByKey
======================================================================================================import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
/*** @author wyyw* 读取配置文件* 根据配置文件中的内容获取要连接的地址** */
public class getValueByKey {private static String filename= "linkconfig.propertes";/*** @author wyyw* @param key 要查询的内容key* @return 根据key查询出来的value** */public static String readValue( String key){Properties props = new Properties();FileInputStream in=null;try{in = new FileInputStream(filename);props.load(in);String value = props.getProperty(key);return value;}catch(Exception e){System.out.println("读取配置文件失败,请检查配置文件 linkconfig.propertes 格式如下");System.out.println("IpAddrss=*.*.*.*");System.out.println("Port=*");return null;}finally{try {in.close();} catch (IOException e) {System.out.println("读取配置文件失败,请检查配置文件 linkconfig.propertes 格式如下");System.out.println("IpAddrss=*.*.*.*");System.out.println("Port=*");}}}
}
======================================================================================================linkconfig.propertes 和项目SRC文件夹同级
======================================================================================================
IpAddrss=127.0.0.1Port=6500

Socket桥(转载)相关推荐

  1. Python基础-socket编程

    一.网络编程 自从互联网诞生以来,现在基本上所有的程序都是网络程序,很少有单机版的程序了. 计算机网络就是把各个计算机连接到一起,让网络中的计算机可以互相通信.网络编程就是如何在程序中实现两台计算机的 ...

  2. 基于TCP协议的socket通信

    一.服务器端 1.创建serverSocket,即服务器端的socket,绑定指定的端口,并侦听此端口 ServerSocket server = new ServerSocket(8888); 2. ...

  3. android 入门-Android Permission denied(不允许连接Socket) 错误

    Android Permission denied(不允许连接Socket) 错误 转载于:https://www.cnblogs.com/luquanmingren/p/4260633.html

  4. epoll socket 服务端中read和write的返回值讨论

    2019独角兽企业重金招聘Python工程师标准>>> 先贴一段代码,代码很简单要看过epoll如何使用,都应该能看懂. 这是服务端程序: #include <sys/sock ...

  5. C# Socket编程笔记(转)

    C# Socket编程笔记 http://www.cnblogs.com/stg609/archive/2008/11/15/1333889.html TCP Socket: Server 端连接步骤 ...

  6. 割点和桥算法——摘自《算法艺术与信息学竞赛》

    http://blog.csdn.net/cicirise/archive/2009/04/13/4068611.aspx 最近在做圆桌骑士的问题,在一个无向图中求出双连通分量,判断各双连通分量中是否 ...

  7. 多线程TCP的socket通信

    应用多线程来实现服务器与多客户端之间的通信. 基本步骤: 1.服务器端创建ServerSocket,循环调用accept()等待客户端的连接 2.客户端创建一个socket并请求和服务器端的连接 3. ...

  8. BSD Socket~TCP~Example Code

    TCP 协议实现 C版本号,可用于Mac OS X机器上执行 Server: /* Setting up a simple TCP server involves the following step ...

  9. C++学习之Socket

    Socket是什么 socket就是套接字的意思,用于描述地址和端口.应用程序通过socket向网络发出请求或者回应. socket编程有三种: 流式套接字(SOCK_STREAM) 数据报套接字(S ...

最新文章

  1. 网易严选 x 网易有数:数据产品+数据中台双引擎模式实践
  2. 一文详解ORB-SLAM3
  3. python考核总结_Python阶段总结
  4. php的异常详解,PHP5中的异常处理详解
  5. PowerDesigner pdm生成Access的方法
  6. java headless_使用Chrome Headless 快速实现java版数据的抓取
  7. 从头编写 asp.net core 2.0 web api 基础框架 (2)
  8. LeetCode之两数之和
  9. Visio图形自动编号
  10. MyBatis 延迟加载的三种加载方式深入,你get了吗?
  11. openssl内存分配,查看内存泄露
  12. 如何用MathType快速输入公式
  13. sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION问题解决
  14. LAMP架构调优(五)——网页缓存设置
  15. construct2游戏设计与制作
  16. garageband for mac下载(含教程+吉他和弦)
  17. vivo android 6.0 root,vivo手机怎么获取root权限?vivo手机一键ROOT教程
  18. 怎么查看html页面,网页浏览记录如何查看_怎样查历史网页浏览记录
  19. 安卓linux获取最高权限获取,安卓root是什么意思(获取手机最高权限)
  20. 币优网区块链原理浅析

热门文章

  1. C# 复制幻灯片(包括格式、背景、图片等)到同/另一个PPT文档
  2. java核心技术读书笔记1
  3. Javascript:charCodeAt()方法及示例
  4. Windows7下最新Android开发环境搭建(JDK1.7 + Eclipse Indigo(3.7) + SDK-r12 + ADT-12)
  5. C#减少图片文件大小和尺寸
  6. WebAssembly 的由来
  7. A+B Problem
  8. 阿里云飞天技术出海 eWTP落地马来西亚
  9. 文化致胜的时代 协同OA可以这样助力企业文化建设
  10. 求从第一列走到第n列的最短路径