概述
package com.socket.util;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client extends Thread {
public static class Nksocket extends Thread {
public String ip = null;//连接服务器的IP
public Integer port = null;//连接服务器的端口
public String call = null;//联系人电话
public String proName = null;//项目名称
private Socket socket = null;//套节字对象
private boolean close = false; // 关闭连接标志位,true表示关闭,false表示连接
private Integer sotimeout = 1 * 1 * 10;//超时时间,以毫秒为单位
//------------------------------------------------------------------------------
public Nksocket() {
init();
}
public Nksocket(String ip, Integer port,String call,String proName) {
setIp(ip);
setPort(port);
setCall(call);
setProName(proName);
init();
}
/**
* 初始化socket对象
*/
public void init() {
try {
InetAddress address = InetAddress.getByName(getIp());
socket = new Socket(address, getPort());
socket.setKeepAlive(true);//开启保持活动状态的套接字
socket.setSoTimeout(sotimeout);//设置超时时间
close = !Send(socket, "2");//发送初始数据,发送成功则表示已经连接上,发送失败表示已经断开
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 读数据线程
*/
@Override
public void run() {
while (true) {
//---------读数据---------------------------
close = isServerClose(socket);//判断是否断开
/*if (!close) {//没有断开,开始读数据
String readtext = ReadText(socket);
if (readtext != null && readtext.trim().length() > 0) {
System.out.println("读取数据:" + readtext);
}
}*/
//---------创建连接-------------------------
while (close) {//已经断开,重新建立连接
try {
InetAddress address = InetAddress.getByName(getIp());
socket = new Socket(address, getPort());
socket.setKeepAlive(true);
socket.setSoTimeout(sotimeout);
close = !Send(socket, "2");
System.out.println("建立连接成功:" + getIp() + ":" + getPort()+getProName());
this.sleep(1000*60*10);
} catch (Exception se) {
System.out.println("创建连接失败:" + getIp() + ":" + getPort());
String[] split = getCall().split(">");
System.out.println("报警----->"+getProName());
for (int i = 0; i < split.length; i++) {
// PhoneCode.getPhonemsg(split[i], getProName()+"系统连接失败");
}
try {
this.sleep(1000*60*10);
} catch (InterruptedException e) {
e.printStackTrace();
}
close = true;
}
}
}
}
/**
* 发送数据,发送失败返回false,发送成功返回true
*
* @param csocket
* @param message
* @return
*/
public Boolean Send(Socket csocket, String message) {
try {
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println(message);
return true;
} catch (Exception se) {
se.printStackTrace();
return false;
}
}
/**
* 读取数据,返回字符串类型
*
* @param csocket
* @return
*/
public String ReadText(Socket csocket) {
try {
csocket.setSoTimeout(sotimeout);
InputStream input = csocket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(input));
char[] sn = new char[1000];
in.read(sn);
String sc = new String(sn);
return sc;
} catch (IOException se) {
return null;
}
}
/**
* 判断是否断开连接,断开返回true,没有返回false
*
* @param socket
* @return
*/
public Boolean isServerClose(Socket socket) {
try {
socket.sendUrgentData(0xFF);//发送1个字节的紧急数据,默认情况下,服务器端没有开启紧急数据处理,不影响正常通信
return false;
} catch (Exception se) {
return true;
}
}
//------------------------------------------------------------------------------
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public Integer getPort() {
return port;
}
public void setPort(Integer port) {
this.port = port;
}
public String getCall() {
return call;
}
public void setCall(String call) {
this.call = call;
}
public String getProName() {
return proName;
}
public void setProName(String proName) {
this.proName = proName;
}
}
}
package com.socket.util;
public class Mian {
//函数入口
public static void main(String[] args) throws Exception {
String center = Io.readerFileName("E://Monitor", "//monitor.txt");
//读取每一组以分号结尾的数据
String[] split = center.split(";");
for (int i = 0; i < split.length; i++) {
//读取每一组以逗号结尾的数据
String[] split1 = split[i].split(",");
String host = split1[0];
int port = Integer.parseInt(split1[1]);
String call = split1[2];
String proName = split1[3];
//需要服务器的正确的IP地址和端口号
new Thread(new Client.Nksocket(host, port, call, proName)).start();
}
}
}
//txt文本
39.123.123.226,5000,15011111,1.0系统;123.123.41.178,9901,1501122222,2.0系统;
记录一次测试公司网站是否存活的一个小程序
最后
以上就是糟糕小懒猪为你收集整理的测试socket连接是否正常的全部内容,希望文章能够帮你解决测试socket连接是否正常所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复