socket判断连接状态,java测试socket接口

  socket判断连接状态,java测试socket接口

  写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用

  在窝类中有一个方法sendUrgentData,它会往输出流发送一个字节的数据,只要对方窝的SO_OOBINLINE属性没有打开,就会自动舍弃这个字节(在爪哇中是抛出异常),而SO_OOBINLINE属性默认情况下就是关闭的。推荐:java视频教程

  示例:

  公共类Nksocket扩展线程{

  公共字符串ip=null//连接服务器的互联网协议(互联网协议)

  公共整数端口=null//连接服务器的端口

  私有套接字socket=null//套节字对象

  私有布尔close=false//关闭连接标志位,真的表示关闭,假的表示连接

  私有整数sotimeout=1 * 1 * 10//超时时间,以毫秒为单位

  //-

  公共Nksocket(){

  init();

  }

  公共Nksocket(字符串ip,整数端口){

  setIp(IP);

  设置端口(端口);

  init();

  }

  /**

  * 初始化窝对象

  */

  public void init(){

  尝试{

  inet地址=inet地址。get by name(getIp());

  socket=new Socket(address,get port());

  插座。setkeepalive(true);//开启保持活动状态的套接字

  插座。setsotimeout(sotime out);//设置超时时间

  关闭=!发送(套接字, 2 );//发送初始数据,发送成功则表示已经连接上,发送失败表示已经断开

  }catch(UnknownHostException e) {

  e。printstacktrace();

  }catch(IOException e){

  e。printstacktrace();

  }

  }

  /**

  * 读数据线程

  */

  公共无效运行(){

  while(true){

  //- 读数据-

  close=isServerClose(套接字);//判断是否断开

  如果(!关闭){//没有断开,开始读数据

  string read text=读取文本(socket);

  if(readtext!=null readtext.trim().长度()0){

  System.out.println(读取数据:阅读正文);

  }

  }

  //- 创建连接-

  while(close){//已经断开,重新建立连接

  尝试{

  System.out.println(重新建立连接: getIp(): getPort());

  inet地址=inet地址。get by name(getIp());

  socket=new Socket(address,get port());

  插座。setkeepalive(true);

  插座。setsotimeout(sotime out);

  关闭=!发送(套接字, 2 );

  System.out.println(建立连接成功: getIp(): getPort());

  }catch(异常se){

  System.out.println(创建连接失败: getIp(): getPort());

  关闭=真

  }

  }

  }

  }

  /**

  * 发送数据,发送失败返回假的,发送成功返回真实的

  * @param csocket

  * @param消息

  * @返回

  */

  公共布尔发送(套接字csocket,字符串消息){

  尝试{

  PrintWriter out=新的PrintWriter(套接字。获取输出流(),true);

  out.println(消息);

  返回真实的

  }catch(异常se){

  se。printstacktrace();

  返回错误的

  }

  }

  /**

  * 读取数据,返回字符串类型

  * @param csocket

  * @返回

  */

  公共字符串ReadText(Socket csocket){

  尝试{

  csocket。setsotimeout(sotime out);

  InputStream输入=c套接字。getinputstream();

  缓冲读取器in=新缓冲读取器(新输入流读取器(输入));

  char[]sn=new char[1000];

  英寸读(sn);

  字符串sc=新字符串(sn);

  返回sc;

  }catch(IOException se){

  返回空

  }

  }

  /**

  * 判断是否断开连接,断开返回没错,没有返回错误的

  * @param套接字

  * @返回

  */

  public Boolean isServerClose(Socket Socket){

  尝试{

  插座。sendurgentdata(0x ff);//发送一个字节的紧急数据,默认情况下,服务器端没有开启紧急数据处理,不影响正常通信

  返回错误的

  }catch(异常se){

  返回真实的

  }

  }

  /**

  * 测试

  * @param ags

  */

  公共静态void main(String[] ags){

  NK插座NK插座=新NK插座( 127。0 .0 .1 ,8090);

  NK插座。start();

  }

  //-

  公共字符串getIp() {

  回归IP;

  }

  public void setIp(字符串ip) {

  this.ip=ip

  }

  公共整数getPort() {

  返回端口;

  }

  public void setPort(整数端口){

  this.port=port

  }

  }更多java知识请关注PHP中文网java基础教程板块。以上是java判断socket是否连接的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: