java判断socket是否连接_java判断socket是否连接
在socket类中有一个方法sendUrgentData,它会往输出流发送一个字节的数据,只要对方Socket的SO_OOBINLINE属性没有打开,就会自动舍弃这个字节(在Java 中是抛出异常),而SO_OOBINLINE属性默认情况下就是关闭的。推荐:java视频教程
示例:public class Nksocket extends Thread{
public String ip=null;//连接服务器的IP
public Integer port=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){
setIp(ip);
setPort(port);
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();
}
}
/**
* 读数据线程
*/
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{
System.out.println("重新建立连接:"+getIp()+":"+getPort());
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());
}catch(Exception se){
System.out.println("创建连接失败:"+getIp()+":"+getPort());
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;
}
}
/**
* 测试
* @param ags
*/
public static void main(String[] ags){
Nksocket nksocket = new Nksocket("127.0.0.1",8090);
nksocket.start();
}
//------------------------------------------------------------------------------
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;
}
}
更多java知识请关注PHP中文网java基础教程栏目。
java判断socket是否连接_java判断socket是否连接相关推荐
- java中socket编程实例_Java中socket编程的实现过程(代码实例)
本篇文章给大家带来的内容是关于socket编程的实现过程,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.socket 服务器搭建 实例化socket服务器,循环获取请求packa ...
- java 网络io详解_Java网络socket编程详解
或许有点长 但是一步步教你 我想你也愿意看7.2面向套接字编程 我们已经通过了解Socket的接口,知其所以然,下面我们就将通过具体的案例,来熟悉Socket的具体工作方式7.2.1使用套接字实现基于 ...
- java socket 阻塞模式_Java中Socket Read阻塞问题
本人来说并不熟悉JAVA语言,只是近期在分析某个简单的java agent程序时,根据对应的代码写了一个对接的程序,两者之间是典型的C/S socket编程.客户端在向服务端发送相应的指令后,服务端( ...
- java socket 聊天室_java利用Socket实现聊天室功能实例
导读热词 最近研究了下Java socket通信基础,利用代码实现了一个简单的多人聊天室功能,现把代码共享下,希望能帮到有兴趣了解的人. 目录结构: ChatClient: package com.p ...
- java socket调用接口_Java中socket接口调用
最近一个项目中接口通讯这一块主要是调用银联系统的socket接口,我方是客户端,即发送请求接收返回报文的一方.在贴代码之前,还是要了解一下关于socket的基础知识. Socket的基本概念 1.建立 ...
- java socket资源释放_java基础--socket
(1) 一.网络:将不同区域的计算机连接到一起 局域网 城域网 互联网 二.地址:IP地址 确定网络上 一个绝对地址 |位置 --->房子的地址 三.端口号: 区分计算机软件的 -->房子 ...
- java判断时间是不是星期五_Java判断当前日期是星期几
参考链接地址:http://blog.csdn.net/a9529lty/article/details/3206942 /** * 判断当前日期是星期几 * @param pTime 修要判断的时间 ...
- java socket超时时间_java中socket 默认超时时间 | 学步园
MS:永远吧 Java代码 connect publicvoidconnect(SocketAddress endpoint, inttimeout) throwsIOException Connec ...
- java socket 读取文件_Java中Socket下载一个文本文件
package com.lanqiao.demo2; import java.io.BufferedInputStream; import java.io.FileInputStream; impor ...
最新文章
- 1.3MB的超轻YOLO算法!全平台通用,准确率接近YOLOv3,速度快上45%丨开源
- 给出中后或者前中遍历,确定一个二叉树
- BCH零确认和比特币RBF该怎么选?
- 小巧密码破解工具IE PassView使用指南
- java 多线程池_Java项目中,线程池中线程数量太大会有什么影响?
- 聊一聊Jmeter与多接口测试
- Apache Camel教程– EIP,路由,组件,测试和其他概念的简介
- c语言cis,c语言小白学习历程第五篇
- ServicePointManager.ServerCertificateValidationCallback 冲突的解决
- real-time RGB-D camera relocalization
- Win8 Style App 播放Smooth Streaming
- CREO:CREO软件之零件【编辑】之修饰、用户定义特征的简介及其使用方法(图文教程)之详细攻略
- html中怎样把背景图片置顶,HTML5中背景图片如何设置
- PAT-2021年春季乙级考试题解
- 王道——数据结构 第一章 思维拓展
- SXT:聚合与组合的理解
- 治愈系好声线:唱见散搭
- discuz mysql 配置_Discuz如何修改数据库配置?
- Basic Authorization 认证方法
- maven shade 插件的小插曲