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 ...
随机推荐
- [原] XAF 如何啟用ListView橫向滾動條
using System; using DevExpress.ExpressApp; using DevExpress.ExpressApp.Win.Editors; using DevExpress ...
- IO-04. 混合类型数据格式化输入(5)
本题要求编写程序,顺序读入浮点数1.整数.字符.浮点数2,再按照字符.整数.浮点数1.浮点数2的顺序输出. 输入格式: 输入在一行中顺序给出浮点数1.整数.字符.浮点数2,其间以1个空格分隔. 输出格 ...
- python发邮件实现Redis通知功能
# -*- coding:utf-8 -*- import smtplib #import os from email.mime.text import MIMEText from email.mim ...
- centos6 一个vlan配置多ip地址
添加vlan [root@localhost network-scripts]# vconfig add eth1 109 配置文件,此处配置了vlan109使用子接口进行多ip配置: [root@l ...
- windows下在文件夹中快速启动cmd
在windows下,有时候由于特定需要,我们经常需要将cmd cd到某文件下进行命令行操作,其实,这里有一个小技巧: 在一个文件下,按住shift键,然后点击鼠标右键,你就会发现菜单栏中多出一个“在 ...
- innodb buffer pool相关特性
背景 innodb buffer pool作为innodb最重要的缓存,其缓存命中率的高低会直接影响数据库的性能.因此在数据库发生变更,比如重启.主备切换实例迁移等等,innodb buffer po ...
- 备库Seconds_Behind_Master的计算
背景 在mysql主备环境下,主备同步过程如下,主库更新产生binlog, 备库io线程拉取主库binlog生成relay log.备库sql线程执行relay log从而保持和主库同步. 理论上主库 ...
- nginx(1、正向代理)
正向代理是指客户端通过代理服务器访问某一个服务器,最常见的例子是内网用户通过代理访问外网,以及所谓的“FQ”. 在windows下实例如下: 1.下载安装包:nginx-1.7.9.zip: 2.解压 ...
- 设计模式之美:Template Method(模板方法)
索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Template Method 模式结构样式代码. 意图 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中. Templat ...
- Ubuntu Desktop开发生产环境搭建
Ubuntu Desktop开发生产环境搭建 1 开发生产环境搭建 在本节内容开始前,先定义一下使用场合,没有哪种系统或者设备是万能的,都有它的优点和缺点,能够在具体的使用场景,根据自身的需求来取 ...