Socket桥(转载)
最好方案:使用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.1 Port=6500
Socket桥(转载)的更多相关文章
- GJM : 【C# 高性能服务器】完成端口、心跳的高性能Socket服务器 [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- 仔细讲解socket(转载https://www.zybuluo.com/phper/note/47110)
老实讲,到目前为止,我对socket一无所知,真的.我就现学现卖用过nodejs平台的socket.io搭建过一套高可用实时性的网页聊天系统,其他,就真的只是听过它. 今天就来仔仔细细的学一下,soc ...
- socket简述-------转载
“一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. ——有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览 ...
- C++ socket编程-转载
转自:https://www.cnblogs.com/L-hq815/archive/2012/07/09/2583043.html 若有违规请联系我删除. 介绍 Socket编程让你沮丧吗?从man ...
- C#用SOCKET发送HTTP请求小例
private void button1_Click(object sender, EventArgs e) { string urlStr = this.textUrl.Text ; if (url ...
- 浅谈拒绝服务攻击的原理与防御(4):新型DDOS攻击 – Websocket和临时透镜
0×01 前言 前几天我已经分别发了三篇关于DDOS攻击相关的文章,我也是第一次在freebuf上发表这种文章,没想到有那么多人点击我真的很开心,前几天我为大家介绍的DDOS攻击的方法和原理都是已经出 ...
- JAVA十六进制数据接收与传输
一.十六进制转换工具类 主要包含十六进制字符串转ASCII,ASCII转十六进制字符串以及十六进制字符串转Byte数组等方法: /** * Created by wly on 2018/4/17. * ...
- GJM :异步Socket [转载]
原帖地址:http://blog.csdn.net/awinye/article/details/537264 原文作者:Awinye 目录(?)[-] 转载请原作者联系 Overview of So ...
- node与socket.io搭配小例子-转载
//服务端代码 io = require('socket.io').listen(app), fs = require('fs'), cookie=require('cookie'); request ...
随机推荐
- hdu 5718(Oracle)大数加法
曾经有一位国王,统治着一片未名之地.他膝下有三个女儿. 三个女儿中最年轻漂亮的当属Psyche.她的父亲不确定她未来的命运,于是他来到Delphi神庙求神谕. 神谕可以看作一个不含前导零的正整数n n ...
- Spring对Quartz的封装实现简单需注意事项
前段时间在项目中一直使用正常的Quartz突然出现了任务漏跑的情况,由于我以前看过Quartz的内部实现,凭借记忆我觉得是由于Quartz的线程池的使用出现问题导致了故障的发生.为了搞清问题的真相,我 ...
- 升级ruby后再安装cocodPod
1.移除现有的Ruby $gem sources --remove https://rubygems.org/ 2.使用淘宝镜像 $gem sources -a https://ruby.taobao ...
- jmSlip WEB前端滑屏组件
基于css3的滑屏组件 demo: http://slip.jm47.com 下载: https://github.com/jiamao/jmSlip 功能清单 区域横滚 整屏竖滚 滚动动画效果 区域 ...
- Vs2013 头文件注释
在vs2013的默认安装目录 1.CS类修改方式 在C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTempla ...
- 【腾讯Bugly干货分享】移动互联网测试到质量的转变
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ee0934b690d84c3188d7c7 Dev Club 是一个交流移动 ...
- Java设计模式1:设计模式概论
设计模式是什么 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易地被他人理解.保证代码可靠性.毫无 ...
- 代码规范、代码复审、PSP
作业三: 代码规范.代码复审.PSP 代码规范 代码规范的重要性 一.规范的代码可以促进团队合作 一个项目大多都是由一个团队来完成,如果没有统一的代码规范,那么每个人的代码必定会风格迥异.且不说会存 ...
- var与this,{}与function 小记
JavaScript var是用来定义一个变量,this常用来定义或调用一个属性或方法.但是在全局范围内,this和var定义变量是等价的. window console.log('window:', ...
- IOS上架流程
来个简易版本的.此版本针对用于初次上架的MAC以及在别的本上上架过,但是新换MAC但不换开发者帐号的MAC. 1:首先确认本机没有老旧的开发和distribution证书,有的话,删除: 2:在本机打 ...