我用socket分别创建了一个服务器和一个客户端。

当服务器程序运行时,客户端和服务器发送接收数据是OK的。

但是,如果服务器程序关闭以后,客户端仍然发送请求的话,会抛出一个IOException。但这个时间间隔很久,要三到四分钟才会抛出这个异常的。刚开始还以为是死机了呢!

我想在客户端做一个处理:如果服务器未开,要弹出一个提示框,然后结束当前程序。 
请问怎么实现?

附创建客户端的部分代码: 
Socket socket = new Socket("10.13.81.3",5000);

sendMsg(str);//这个是给服务器发送数据的接口 
readMsg();//这个是服务器收到后 立即会发送数据给客户端,由客户端在这里接收数据

我就想在创建socket之后,判断是否connect,没有的话就弹出对话框,但是不成功.

解决方法:

//global variables
public Socket socket = null;
private InetSocketAddress isa = null;
private static final String HOST = "10.13.81.26";
private static final String PORT = 5000;
private static final String TIMEOUT = 100; ///connect to server
try
{
socket = new Socket();
isa = new InetSocketAddress(HOST,PORT);
socket.connect(isa,TIMEOUT);
}
catch(IOException e)
{
e.printStackTrace();
}
finnally
{
this.disconnectToServer();
} ///disconnect to server
try
{
if(socket != null)
{
socket.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}

之前链接socket直接用: 
Socket socket = new Socket("10.13.81.26",5000); 
socket.setTimeout(100); 
这样,如果出现服务器端未开启时,即使设置了100ms超时时间,也会过很长时间才会捕捉到IOException

现在先定义isa,通过isa跟socket链接 可以解决上面的问题

转自:http://gundumw100.iteye.com/blog/1117694

android下socket编程问题:服务器关闭时,客户端发送请求的异常处理的更多相关文章

  1. Linux下Socket编程的端口问题( Bind error: Address already in use )

    Linux下Socket编程的端口问题( Bind error: Address already in use ) 在进行linux网络编程时,每次修改了源代码并再次编译运行时,常遇到下面的地使用错误 ...

  2. linux下socket编程实例

    linux下socket编程实例一.基本socket函数Linux系统是通过提供套接字(socket)来进行网络编程的.网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符.s ...

  3. Linux下socket编程基本知识

    本文档主要讲解了Linux下socket编程的一些基本知识,主要包括套接字和字节序的概念,以及一些常用的结构体和函数. 本文是在网易云课堂学习过程中的记录,这个老师讲得很不错,推荐大家围观. Linu ...

  4. Android HTTP实例 使用GET方法和POST方法发送请求

    Android HTTP实例 使用GET方法和POST方法发送请求 Web程序:使用GET和POST方法发送请求 首先利用MyEclispe+Tomcat写好一个Web程序,实现的功能就是提交用户信息 ...

  5. linux下socket编程-进程间通信

    一.什么是Socket Socket接口是TCP/IP网络通信的API,Socket接口定义了许多函数或例程,可以用它们来开发TCP/IP网络上的应用程序. Socket类型有两种:流式Socket ...

  6. linux下socket编程

    相关结构 //下边这两个结构定义在<sys/types.h>里 //一般的地址结构,只能用于覆盖(把其他地址转换为此类型),且只能引用该地址的sa_family字段 struct sock ...

  7. 6.1.1Linux下Socket编程

    什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序.要学Internet上的TCP/IP网络编程, ...

  8. win32下Socket编程(转载)

    在网上找了很多的资料,现将这些资料整合起来,详细介绍一下VC下的socket编程,并提供一个服务器客户端具体的实例.希望对您有所帮助 一.原理部分 (个人觉得这篇写的可以,所以转与此,原文地址:htt ...

  9. 3、linux下Socket编程-TCP/UDP

    1.什么是Socket 网络的 Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符.Socket也具有一个类似于打开文件的函数调用Socket(),该函数返 回一个整型的Socke ...

随机推荐

  1. weex & web app & vue

    weex & web app & vue https://weex-project.io/tools/playground.html https://weex.apache.org/ ...

  2. 第八篇:python基础_8 面向对象与网络编程

    本篇内容 接口与归一化设计 多态与多态性 封装 面向对象高级 异常处理 网络编程 一. 接口与归一化设计 1.定义 (1)归一化让使用者无需关心对象的类是什么,只需要知道这些对象都具备某些功能就可以了 ...

  3. POJ 3630 Phone List | Trie 树

    题目: 给定 n 个长度不超过 10 的数字串,问其中是否存在两个数字串 S, T ,使得 S 是 T 的前缀.多组数据,数据组数不超过 40. 题解: 前缀问题一般都用Trie树解决: 所以跑一个T ...

  4. BZOJ4826 [Hnoi2017]影魔 【线段树 + 单调栈】

    题目链接 BZOJ4826 题解 蒟蒻智力水平捉急orz 我们会发现相邻的\(i\)和\(j\)贡献一定是\(p1\),可以很快算出来[然而我一开始忘了考虑调了半天] 我们现在只考虑不相邻的 我们只需 ...

  5. PHP AES128加密解密

    <?php /** * Class AES */ class AES { public static function encrypt($input, $key) { $size = mcryp ...

  6. hdu 6114 百度之星复赛B T1

    Chess Problem Description 車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋子阻隔的棋子. 一天,小度在棋盘上摆起了许多車……他想知道,在一共N×M个点的矩形棋盘中 ...

  7. 制定ip池内随机生成ip地址

    ]) { +] = {}; unsigned mask = 0x0; sscanf(ip_pool, "%[^/]/%d", ip_addr, &mask); long l ...

  8. 【GDI+】MFC画图- 消除锯齿(转)

    原文转自 https://wenku.baidu.com/view/b5460979700abb68a982fbcf.html 在常规条件下,MFC画出来的图形.文字都是有锯齿的.如下图所示: 怎样才 ...

  9. 获得NOTEPAD++ Download Manager的所有下载列表的内容的au3脚本

    ;~ 获得NOTEPAD++ Download Manager的所有下载列表的内容的au3脚本 ;~ 作者: 鹏程万里 ;~ Email:aprial@163.com ;~ 创建日期: 2014年11 ...

  10. kubernetes 搭建集群外部ip服务

    nginx-pod.yaml apiVersion: v1 kind: Pod metadata: name: webapp labels: app: webapp spec: containers: ...