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

我用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

 

转载于:https://www.cnblogs.com/shanmao/p/3558636.html

安卓与PC间Socket通信详细教程及源码解析 Socket即套接字,是网络编程的基础接口,它存在于计算机网络中的两个程序间,用于处理数据包的发送与接收。Socket提供了多种网络通信协议的支持,如TCP和UDP,它们分别用于保证数据传输的可靠性和速度。安卓设备通过网络与外界进行通信是实现丰富功能应用的基础。Socket通信作为一种网络通信技术,能够让安卓应用在不同的网络协议(如TCP/IP、UDP等)下交换数据。无论是在数据同步、远程服务访问,还是在物联网等需要远程设备间互动的场景中,Socket通信都扮演着重要的角色。 阅读详情

相关推荐

Android平台Socket编程实战指南

Android网络编程主要涉及客户端与服务器之间的数据交换,可以通过HTTP、HTTPS、Socket等多种协议实现。开发者需具备网络通信原理知识,熟悉Android SDK提供的网络API,以及相关的安全和优化技巧。Socket,也称为套接字,是网络编程的基础。它是应用程序之间进行通信的端点,实现了不同主机进程间的双向通信。在数据通信中,Socket起到了抽象层的作用,屏蔽了底层网络协议的复杂性,为开发者提供了一套简洁的API来构建网络应用。

weixin_32661831的博客 1154

关于Android中Socket的通信问题

做过一个简单的Android通过socket实现即时通信的Demo,在服务端读取数据的时候出现问题,只有当安卓客户端关闭程序之后服务端才能读取到数据。原因是服务端使用的readLine()方法,在安卓端传输数据的时候并没有传换行符过来 ,导致readLine()方法一直在读,没有停止。解决方法是在传输的数据后面加换行符。

zzw的博客 713

Android平台Socket客户端编程与实践

Socket通信是网络编程中实现应用程序之间通信的一种方式。在Android开发中,通过Socket可以方便地进行数据传输和交换。它涉及到网络中的客户端和服务器端,两者之间通过特定的IP地址和端口号来建立连接和通信。Android 采用了基于 Linux 的多线程模型,系统中的每个应用程序都有一个主线程(也称为 UI 线程),这个线程负责处理用户界面的操作。当应用执行耗时操作时,主线程会变得繁忙,这将直接影响用户体验,表现为界面卡顿,甚至无响应。

weixin_42146230的博客 686

Android socket服务器通信

下面是一个demo,Android客户端通过socket与服务器通信。  由于Android里面可以完全使用java.io.*包和java.net.*包,那么,实际上,逻辑部分与J2SE没有区别。只是UI代码不一样。  Android客户端通过socket与服务器通信分为下面5步: (1)通过IP地址和端口实例化Socket,请求连接服务器;   [java] view

yundashi168.com 821

Android平台Socket聊天应用实战:客户端与服务端的实现

方法名作用参数示例返回值类型异常类型创建服务端套接字监听指定端口接受客户端连接请求并返回新的SocketSocket获取输入流以读取客户端数据获取输出流以发送数据给客户端关闭服务端套接字void以上是服务端在处理Socket连接和数据交互过程中常用的方法,开发者需要根据实际情况选择合适的参数和处理方法。

weixin_42376614的博客 1186

Android平台Socket客户端实现与实践

Socket通信依赖于传输控制协议(TCP)或用户数据报协议(UDP),其中TCP保证了数据传输的可靠性和顺序性,而UDP则注重传输的效率。在Android开发中,Socket通信一般涉及到两个部分:服务器端和客户端。服务器端负责监听来自客户端的连接请求,并建立连接后进行数据交换;客户端则发起连接请求,连接成功后与服务器进行数据的收发。

weixin_42514750的博客 999

Androin学习笔记四十四:android下socket编程问题:服务器关闭时,客户端发送请求的异常处理

出处:http://gundumw100.iteye.com/blog/1117694 我用socket分别创建了一个服务器和一个客户端。  当服务器程序运行时,客户端和服务器发送接收数据是OK的。  但是,如果服务器程序关闭以后,客户端仍然发送请求的话,会抛出一个IOException。但这个时间间隔很久,要三到四分钟才会抛出这个异常的。刚开始还以为是死机了呢!  我想在客户

自由的天空 1339

SIGIR 2026:信息检索前沿技术与投稿指南

信息检索(Information Retrieval, IR)是计算机科学中处理大规模数据检索的核心技术,其基本原理是通过算法模型从海量数据中高效提取相关信息。随着深度学习的发展,神经信息检索(Neural IR)和多模态检索成为研究热点,如稠密检索模型(DPR)和跨模态预训练(CLIP)等技术的应用显著提升了检索精度。这些技术不仅在学术领域具有重要价值,还在电商搜索、医疗检索等实际场景中展现出巨大潜力。SIGIR作为信息检索领域的顶级会议,汇聚了全球顶尖学者和工业界专家,是展示最新研究成果的重要平台。本文

weixin_29189363的博客 291

Socket编程(Android客户端+PC服务器端)

一个多月没有写东西了,感觉像过了一个暑假。。。废话不多说了,今天来记录一下这两天学习Socket的内容。按照我研究思路来进行一步步的深入Socket。 一、什么是Socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TC

lan_学习分享 5343

从LLaMA到LLaMA-MoE:轻量级混合专家模型构建与实战指南

混合专家(Mixture-of-Experts, MoE)是一种先进的神经网络架构,其核心原理是通过门控网络动态地为不同输入选择不同的专家子网络进行计算,从而实现模型容量的指数级扩展,同时保持推理时的计算量基本不变。这种稀疏激活的特性赋予了MoE极高的技术价值,使其成为解决大模型训练与推理成本矛盾的关键技术之一,在自然语言处理、多模态学习等场景中展现出巨大潜力。本文聚焦于**LLaMA-MoE**这一具体实践,深入探讨了如何基于成熟的稠密模型(如LLaMA),通过**专家构建**与**持续预训练**两大关键

weixin_28730549的博客 565

Unity WebGL项目如何实现画布透明,完美融入网页背景(附.jslib文件与完整配置)

本文详细解析了Unity WebGL项目实现画布透明化的技术原理与实战步骤,从.jslib文件配置到前端框架集成,帮助开发者解决默认背景色问题,实现3D内容与网页设计的无缝融合。重点介绍了透明化核心机制、常见误区及React/Vue等现代框架中的最佳实践方案。

weixin_31896061的博客 300

android 心跳包,android socket 发送心跳包

在项目中,有如下需求:Android客户端向服务器发送数据,收到服务器返回的数据发送成功标识后,客户端即与服务器建立数据一来一往的心跳连接,若服务器端断开时,客户端接收到通知,关闭Service停止发送数据;代码如下:publicclassBackServiceextendsService{privatestaticfinalStringTAG="BackService";/...

weixin_31429257的博客 766

OpenCL编译环境配置

在 Linux 系统上配置 OpenCL 开发环境需要安装适当的驱动、运行时和开发工具。

深之JohnChen的专栏 2003

在安卓应用中实现Socket通信:创建服务端和客户端

此片文章用来记录学习,方便大家拿来即用,知识点不多,注释已经尽可能详细了,收工,下班!

WriteBug001的博客 1159

手把手教你编写PCIe设备驱动:基于Linux内核的实战教程

本文详细介绍了基于Linux内核的PCIe设备驱动开发全流程,包括环境准备、设备探测、中断处理、DMA配置等核心内容。通过实战代码示例和Makefile编写指南,帮助开发者快速掌握PCIe驱动开发技术,实现高性能设备驱动开发与优化。

weixin_30687051的博客 194

用Java和MQTT搞定大疆无人机自动巡检:一个真实机场项目的踩坑与优化记录

本文详细介绍了如何利用Java和MQTT协议实现大疆无人机在机场自动巡检系统的开发与优化。通过实战案例分享系统架构设计、通信协议选型、断线重连机制及数据通道优化等关键环节,帮助开发者解决GPS信号漂移、MQTT消息风暴等典型问题,提升系统性能和可靠性。

weixin_30275415的博客 495

android客户端socket轮询读取服务器数据,Android socket与服务器通讯及心跳链接的实现...

在项目中,有以下需求:Android客户端向服务器发送数据,收到服务器返回的数据发送成功标识后,客户端即与服务器创建数据一来一往的心跳链接,若服务器端断开时,客户端接收到通知,关闭Service中止发送数据;代码以下:javapublic class BackService extends Service {private static final String TAG = "BackServic...

weixin_29171129的博客 571

分布式系统中的“无状态”和“有状态”详解

有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如 tomcat 中的 session。例如登录:用户登录后,我们把登录者的信息保存在服务端 session 中,并且给用户一个 cookie 值,记录对应的 session。然后下次请求,用户携带 cookie 值来,我们就能识别到对应 session,从而找到用户的信息。

AI天才研究院 2万+

Android编程:双工tcp客户端

Android编程:双工tcp客户端本文博客链接:http://blog.youkuaiyun.com/jdh99,作者:jdh,转载请注明.环境:主机:WIN10开发环境:Android Studio 2.2 Preview 3说明:在>介绍了编写TCP客户端方法。先对此代码进行优化,实现以下功能:双工通信。发送一个线程,接收一个线程,不占用UI主线程发送线程在发送完成后会自锁。当有新的任务需要发送,再唤醒

jdh99的专栏 1989

【学习系列】SAP RAP 18:Unmanaged场景开发示例-基本数据更新

本文介绍了在SAP RAP中unmanaged模式下从0到1的开发步骤。unmanaged模式下需要自行实现数据更新、权限检查等逻辑,适用于操作现有数据库表或复杂业务场景。文章以两层的采购订单对象为例,详细说明了创建技术对象(表、视图、行为定义等)的过程,并重点阐述了如何实现CRUD相关方法的核心逻辑。通过创建缓冲类来处理交互阶段和保存阶段的数据操作,确保事务一致性。完整代码展示了抬头层级的增删改查功能实现,为后续明细层级的开发奠定了基础。

DeveloperMrMeng的博客 642

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: XP右键菜单添加“打开所在文件夹”功能
下一篇: 解决eclipse不识别Android手机的问题
dgitra7963
博客等级 码龄10年 10粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值