mark
This commit is contained in:
parent
3b1c667915
commit
e373cd8e01
@ -283,41 +283,41 @@ public enum S7Client {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void check_ping(){
|
private void check_ping(){
|
||||||
while (true){
|
ping_fail_check.execute(new Runnable() {
|
||||||
try {
|
@Override
|
||||||
ScheduledFuture<?> schedule = ping_fail_check.schedule(new Runnable() {
|
public void run() {
|
||||||
@Override
|
while (true){
|
||||||
public void run() {
|
try {
|
||||||
if (connections.size() != coreSize) {
|
if(connections.size()!=coreSize){
|
||||||
int c = coreSize - connections.size();
|
int c = coreSize-connections.size();
|
||||||
for (int z = 0; z < c; z++) {
|
for(int z=0;z<c;z++){
|
||||||
S7Connector connect = connect(host, rack, slot);
|
S7Connector connect = connect(host, rack, slot);
|
||||||
if (connect != null) {
|
if(connect!=null){
|
||||||
logger.info("host:" + host + " ;;(check_ping()) 检测到有断线 ==》 现在断线恢复成功");
|
logger.info("host:"+host +" ;;(check_ping()) 检测到有断线 ==》 现在断线恢复成功");
|
||||||
connections.add(connect);
|
connections.add(connect);
|
||||||
} else {
|
}else {
|
||||||
logger.info("host:" + host + " ;;(check_ping()) 检测到有断线 ==》 现在断线恢复失败");
|
logger.info("host:"+host +" ;;(check_ping()) 检测到有断线 ==》 现在断线恢复失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Thread.sleep(10000);
|
||||||
|
}catch (Exception e){
|
||||||
|
logger.info(" ( outside check_ping catched ) host:"+host +" ;;(check_ping()) Thread.sleep 异常,异常原因:"+e.getMessage());
|
||||||
}
|
}
|
||||||
}, 10000, TimeUnit.SECONDS);
|
}
|
||||||
Object o = schedule.get();
|
|
||||||
}catch (Exception e){
|
|
||||||
logger.info("( out catched ) host:"+host +" ;;(check_ping) "+"check connect.size 出现异常,errMessage is : "+e.getMessage()+"现在进入下一次轮询");
|
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
//todo 当网络断开之后,下面这个ping() 循环不生效。。 可能是read = connector.read( 出来是null,但还是继续通过了,也可能是 ,,当连接全部断开后 getConnector(); 应该是取不到数据的。。也就会报null。这个明天再看看
|
//todo 当网络断开之后,下面这个ping() 循环不生效。。 可能是read = connector.read( 出来是null,但还是继续通过了,也可能是 ,,当连接全部断开后 getConnector(); 应该是取不到数据的。。也就会报null。这个明天再看看
|
||||||
private void ping(){
|
private void ping(){
|
||||||
while (true){
|
executor.execute(new Runnable() {
|
||||||
try {
|
@Override
|
||||||
ScheduledFuture<?> schedule = executor.schedule(new Runnable() {
|
public void run() {
|
||||||
@Override
|
while (true){
|
||||||
public void run() {
|
try {
|
||||||
for (int i = 0; i < coreSize; i++) {
|
for(int i=0;i<coreSize;i++){
|
||||||
S7Connector connector = getConnector();
|
S7Connector connector = getConnector();
|
||||||
try {
|
try {
|
||||||
//只要没有报异常 都是通讯正常的。
|
//只要没有报异常 都是通讯正常的。
|
||||||
@ -328,41 +328,43 @@ public enum S7Client {
|
|||||||
heartBeat.getByteOffset(),
|
heartBeat.getByteOffset(),
|
||||||
heartBeat.getBitOffset(),
|
heartBeat.getBitOffset(),
|
||||||
heartBeat.getType().getTransportSize());
|
heartBeat.getType().getTransportSize());
|
||||||
System.out.println("host:" + host + " ;; " + connector.hashCode() + " : ping");
|
|
||||||
|
System.out.println("host:"+host +" ;; "+connector.hashCode()+" : ping");
|
||||||
Thread.sleep(100);
|
Thread.sleep(100);
|
||||||
} catch (Exception e) {
|
}catch (Exception e){
|
||||||
logger.info("host:" + host + " ;;(ping) " + connector.hashCode() + " : connection error" + "errMessage is : " + e.getMessage());
|
logger.info("host:"+host +" ;;(ping) "+connector.hashCode()+" : connection error"+"errMessage is : "+e.getMessage());
|
||||||
//先把 socket close掉
|
//先把 socket close掉
|
||||||
try {
|
try {
|
||||||
connector.close();
|
connector.close();
|
||||||
connections.remove(connector);
|
connections.remove(connector);
|
||||||
//如果是网络波动照成的socket断开。 等个1S 再重连试试
|
//如果是网络波动照成的socket断开。 等个1S 再重连试试
|
||||||
Thread.sleep(100);
|
Thread.sleep(100);
|
||||||
} catch (Exception ee) {
|
}catch (Exception ee){
|
||||||
logger.info("host:" + host + " ;;(ping) " + "connector.close() 出现异常,errMessage is : " + ee.getMessage());
|
logger.info("host:"+host +" ;;(ping) "+"connector.close() 出现异常,errMessage is : "+ee.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//todo 把之前的连接close 掉,然后新增一个连接到connections
|
//todo 把之前的连接close 掉,然后新增一个连接到connections
|
||||||
if (connections.size() != coreSize) {
|
if(connections.size()!=coreSize){
|
||||||
int c = coreSize - connections.size();
|
int c = coreSize-connections.size();
|
||||||
for (int z = 0; z < c; z++) {
|
for(int z=0;z<c;z++){
|
||||||
S7Connector connect = connect(host, rack, slot);
|
S7Connector connect = connect(host, rack, slot);
|
||||||
if (connect != null) {
|
if(connect!=null){
|
||||||
logger.info("host:" + host + " ;;(ping) " + "ping时候出现异常,尝试重连, 重连成功!!");
|
logger.info("host:"+host +" ;;(ping) "+"ping时候出现异常,尝试重连, 重连成功!!");
|
||||||
connections.add(connect);
|
connections.add(connect);
|
||||||
} else {
|
}else {
|
||||||
logger.info("host:" + host + " ;;(ping) " + "ping时候出现异常,尝试重连, 重连时候还是 出现异常。。");
|
logger.info("host:"+host +" ;;(ping) "+"ping时候出现异常,尝试重连, 重连时候还是 出现异常。。");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Thread.sleep(30000);
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
logger.info(" ( outside ping catched ) host:"+host +" ;;(ping) "+e.getMessage());
|
||||||
}
|
}
|
||||||
}, 30000, TimeUnit.SECONDS);
|
}
|
||||||
Object o = schedule.get();
|
|
||||||
}catch (Exception e){
|
|
||||||
logger.info("( out catched ) host:"+host +" ;;(ping) "+"ping的时候 整体 出现异常,errMessage is : "+e.getMessage()+"现在进入下一次轮询");
|
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user