博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
singnal 13 was raised
阅读量:4538 次
发布时间:2019-06-08

本文共 458 字,大约阅读时间需要 1 分钟。

在app运行过程中按下home键或者其他原因app被挂起,socket连接不会断开,服务器为了节省资源,在一段时间后会主动关闭这个连接。当玩家再次切回到游戏后,前端并不知道这个连接已经断开了,继续通过断开的socket发送消息,这时候send函数会触发SIGPIPE异常导致程序崩溃。
 
解决这个问题我们需要在send的时候检测到服务器已经关闭连接,进行重新连接。正常情况下send函数返回-1表示发送失败,但是在IOS上SIGPIPE在send返回之前就终止了进程,所以我们需要忽略SIGPIPE,让send正常返回-1,然后重新连接服务器。
 
int set = 1;  
setsockopt(sd, SOL_SOCKET, SO_NOSIGPIPE, (
void *)&set, sizeof(int)); 
 
参考转载:
http://i.cnblogs.com/EditPosts.aspx?opt=1
 
 
 

转载于:https://www.cnblogs.com/chenhaosuibi/p/4679397.html

你可能感兴趣的文章
数据库索引分类
查看>>
python 内置函数
查看>>
iOS真机调试遇到No such file or directory的问题
查看>>
POSTMAN-REST Client
查看>>
数据分析师必须掌握的知识结构
查看>>
JRainbow开发进度
查看>>
Linux下安装 jdk
查看>>
雷林鹏分享:XML 总结 下一步学习什么呢?
查看>>
信息存储与管理-读书笔记1
查看>>
openj 4004 01背包问题求方案数
查看>>
超市收银系统之——3
查看>>
数组0元素后置算法
查看>>
web.xml文件详解
查看>>
删除排序数组中的重复数字
查看>>
Linux下MySQL安装配置
查看>>
SQL之排序检索(order by子句)
查看>>
Python_内置函数2_44
查看>>
kettle-SQL文件输出
查看>>
TeeChart 的应用
查看>>
sybase powerdesigner 16.5注册码
查看>>