当前位置: 技术问答>linux和unix
(新手求助)如何完善一个socket
来源: 互联网 发布时间:2016-07-11
本文导语: 客户端和服务器端通过socket进行通信,服务器端的socket程序除了基本的监听,接收,发送以及一些处理工作之外,还需要进行哪些方面的完善才能保证稳定正常的运行? 以及需要注意的各种问题??? | ...
客户端和服务器端通过socket进行通信,服务器端的socket程序除了基本的监听,接收,发送以及一些处理工作之外,还需要进行哪些方面的完善才能保证稳定正常的运行?
以及需要注意的各种问题???
以及需要注意的各种问题???
|
如果你是练习 没有引入多线程的话 没有太多的问题
要是引入多线程 做大一点的项目的话 互斥 死锁等这些是经常容易出问题的地方
要是引入多线程 做大一点的项目的话 互斥 死锁等这些是经常容易出问题的地方
|
用setsockopt设置reuse是防止TIME_WAIT字段导致的静默期,服务器无法重监听。
此外还得考虑DOS类的 syn攻击,有一些扫描工具可用。
此外,函数能设置成异步就异步吧。
|
比较支持田兄的看法!
而且很多时候,是需要关注哪方面,才设置哪方面。很少有固定的模式,例如就设置了某些,然后就一定很健
壮!这也就是为什么实战经验多的人往往很牛的原因
|
要加上些对异常情况的捕获,判断处理,程序中80%的功能都是来做异常处理的;
选择一个比较好的IO模型,提高程序的吞吐量;
网络程序安全也很重要,通信数据之间的加密,信息安全等等
选择一个比较好的IO模型,提高程序的吞吐量;
网络程序安全也很重要,通信数据之间的加密,信息安全等等
|
地址重用,在socket调用和bind 调用之间加上一段对socket的设置:
int opt = 1;
setsockopt(socket_fd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));
int opt = 1;
setsockopt(socket_fd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));
|
定时链路检测是必须的,呵呵
对于程序能自动重新连接就不错了
对于程序能自动重新连接就不错了
|
好好看一下setsockopt相关,不只是一个reuse,还有发送缓冲区的大小,接收缓冲区的大小,心跳,阻塞,很多的属性可以根据你的需求来设置的。