
法二:
struct tcp_info info;
int len=sizeof(info);
getsockopt(sock, IPPROTO_TCP, TCP_INFO, &info, (socklen_t )&len); if((infotcpi_state==TCP_ESTABLISHED)) 则说明未断开 else 断开
法三: 若使用了select等系统函数,若远端断开,则select返回1,recv返回0则断开。其他注意事项同法一。
法四:
int keepAlive = 1; // 开启keepalive属性
int keepIdle = 60; // 如该连接在60秒内没有任何数据往来,则进行探测
int keepInterval = 5; // 探测时发包的时间间隔为5 秒
int keepCount = 3; // 探测尝试的次数如果第1次探测包就收到响应了,则后2次的不再发
setsockopt(rs, SOL_SOCKET, SO_KEEPALIVE, (void )&keepAlive, sizeof(keepAlive));
setsockopt(rs, SOL_TCP, TCP_KEEPIDLE, (void)&keepIdle, sizeof(keepIdle));
setsockopt(rs, SOL_TCP, TCP_KEEPINTVL, (void )&keepInterval, sizeof(keepInterval));
setsockopt(rs, SOL_TCP, TCP_KEEPCNT, (void )&keepCount, sizeof(keepCount));
设置后,若断开,则在使用该socket读写时立即失败,并返回ETIMEDOUT错误
法五: 自己实现一个心跳检测,一定时间内未收到自定义的心跳包则标记为已断开。 参考:>建议:
1、当点击客户端的断开按钮,给服务端发送一个stop消息,然后客户端停止发送
2、当服务端收到客户端的stop消息,即停止接收该客户端发来的消息
所以你的这个if判断语句的xxxx应该由客户端发过来做判断。
希望你能问得更详细点。Tornado是一个跟Nodejs差不多的轻量级>
>
国内也有类似的解决方案,比如百度云推送:
>
这些推送服务的大概流程如下:
你的云端程序(比如Tornado)形成一个通知;
你的云端程序向推送服务发送一个请求;
推送服务向它在客户端的代理转发你的请求;
客户端代理在安卓上广播这个请求,你的移动app得到这个广播;
你的移动app可以在通知中心形成一个intent,或是启动你的后台服务来处理这个请求。
1、首先,需要添加WebService的引用⑴在需要调用WebService的项目上,点击鼠标右键,选择添加服务引用,进入'添加服务引用'界面
⑵点击'高级'按钮,进入'服务引用设置'界面
⑶点击'添加Web引用'按钮,进入'添加Web引用'界面
①在'URL'文本框中,填写需要引用的WebService的地址(例如:)
②点击'前往'按钮,程序会自动前往给定的地址查找WebService服务
③在'Web引用名'文本框中,自定义此次添加的WebService的名称(例如:RemoteWebService)
④点击'添加引用'按钮,程序自动将找的WebService添加的当前的项目中,并自动放在Web References文件夹中
2、调用代码实现
在需要调用WebService的地方添加如下代码:
//实例化WebService
RemoteWebServiceWebService1 ws=new RemoteWebServiceWebService1();
//调用方法,假设需要调用的具体方法定义为:public DataSet GetDataList(int DataType){}
DataSet ds = wsGetDataList(0);
如此,即可实现WebService的引用和代码实现。
1、Web应用开发
Python经常被用于 Web 开发。例如,通过 mod_wsgi 模块,Apache 可以运行用 Python 编写的 Web 程序。Python 定义了 WSGI 标准应用接口来协调 >
不仅如此,一些 Web 框架(如 Django、TurboGears、web2py 等等)可以让程序员轻松地开发和管理复杂的Web程序。
举个最直观的例子,全球最大的搜索引擎 Google,在其网络搜索系统中就广泛使用 Python 语言。另外,我们经常访问的集**、读书、音乐于一体的豆瓣网,也是使用 Python 实现的。
2、 *** 作系统管理、自动化运维开发
很多 *** 作系统中,Python 是标准的系统组件,大多数 Linux 发行版以及 NetBSD、OpenBSD 和 Mac OS X 都集成了 Python,可以在终端下直接运行 Python。
有一些 Linux 发行版的安装器使用 Python 语言编写,例如 Ubuntu 的 Ubiquity 安装器、Red Hat Linux 和 Fedora 的 Anaconda 安装器等等。
另外,Python 标准库中包含了多个可用来调用 *** 作系统功能的库。例如,通过 pywin32 这个软件包,我们能访问 Windows 的 COM 服务以及其他 Windows API;使用 IronPython,我们能够直接调用 Net Framework。
通常情况下,Python 编写的系统管理脚本,无论是可读性,还是性能、代码重用度以及扩展性方面,都优于普通的 shell 脚本。
3、游戏开发
很多游戏使用 C++ 编写图形显示等高性能模块,而使用 Python 或 Lua 编写游戏的逻辑。和 Python 相比,Lua 的功能更简单,体积更小;而 Python 则支持更多的特性和数据类型。
比如说,国际上指明的游戏 Sid Meier's Civilization,就是使用 Python 实现的。
4、编写服务器软件
Python 对于各种网络协议的支持很完善,所以经常被用于编写服务器软件以及网络爬虫。
比如说,Python 的第三方库 Twisted,它支持异步网络编程和多数标准的网络协议(包含客户端和服务器端),并且提供了多种工具,因此被广泛用于编写高性能的服务器软件。
5、科学计算
NumPy、SciPy、Matplotlib 可以让 Python 程序员编写科学计算程序。
以上都只是 Python 应用领域的冰山一角,总的来说,Python 语言不仅可以应用到网络编程、游戏开发等领域,还可以在图形图像处理、只能机器人、爬取数据、自动化运维等多方面展露头角,为开发者提供简约、优雅的编程体验。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)