博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Socket桥(转载)
阅读量:6326 次
发布时间:2019-06-22

本文共 5208 字,大约阅读时间需要 17 分钟。

最好方案:使用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

 

转载地址:http://gvpaa.baihongyu.com/

你可能感兴趣的文章
MyBatis学习总结(七)——Mybatis缓存
查看>>
RabbitMQ学习总结(一)——基础概念详细介绍
查看>>
关于ls vim查看中文乱码问题
查看>>
FileReader读取文件编码丢失问题(乱码)
查看>>
国内DNS方面的技术力量
查看>>
ORACLE排错记录
查看>>
我热爱编程,但我讨厌这个行业
查看>>
alwayson高可用性组
查看>>
都是编译器惹的祸
查看>>
文件权限
查看>>
route命令
查看>>
用 cgroups 管理 cpu 资源
查看>>
MySQL各版本特性及其价格
查看>>
11g新特性:RDBMS Component TRACE
查看>>
jquery 修改排序
查看>>
Iterator接口
查看>>
嵌入式开发的学习步骤及入门
查看>>
决心书
查看>>
Oracle 基础篇 --- B树索引内部结构
查看>>
centos7 Tab键之后yum不自动补全解决
查看>>