如何写安全的网络通讯服务器程序----避免程序崩溃的几种方式
来源:互联网 发布:深入浅出python 微盘 编辑:程序博客网 时间:2024/05/21 07:46
首先,必须保证不使用如下三个函数:
strcpy, strcat, sprintf.
因为他们不检查目的端的大小,如果源字符串长度大于目的端的缓冲区大小,则会导致程序崩溃。
所以如果在网络服务器上使用了如上函数,假如客户端不小心发送了一个超大的字符串过来,那么服务器程序很容易崩溃。
替代方案如下:
strncpy, strncat, snprintf.
因为他们指定了目的端的大小,如果源字符串长度太长,则多余的内容会被丢弃。
其次,服务器端程序一定要保证协议层的缓冲区不被堵塞。避免方法有:
1,开辟一个专门的线程,一旦缓冲区内有内容就取出来了,后续处理的快慢没有关系,再想办法出来,比如说超时等等。
2,用select或者pselect。
3,accept后开辟新的线程去处理这个客户端的连接。
还有,如果程序中需要操作数据库,那么可以用封装成对象来连接,写入。因为这样的话,此对象的操作是在栈上的操作,出了此程序段,对象自动析构,一点残渣都不剩,如此下次再操作时菜比较安全。
最后,如果程序中用到锁的话,除了互斥锁,还有共享锁可以考虑,因为共享锁可以同时多个线程来读。另外,使用时也可以封装成对象来使用,像操作数据库一样,最好也是使用对象,出了此程序段,对象自动析构,一点残渣都不剩,这样就不会存在锁没有释放掉的情况下,又去使用这把锁,从而导致死锁。
- 如何写安全的网络通讯服务器程序----避免程序崩溃的几种方式
- 如何调试崩溃的程序
- 程序员如何避免开发的IOSApp出现程序的崩溃现象
- 造成IOS程序崩溃的几种可能的原因
- 基于UDP的网络通讯程序
- iOS Xcode常见的几种程序崩溃
- Unix下如何写安全的C程序
- Unix下如何写安全的C程序
- C++服务器程序崩溃的调试办法
- erlang程序运行的几种方式
- 程序交互的几种方式
- oracle 程序入口的几种方式
- 安卓中程序打包的几种方式
- 运行Python程序的几种方式
- 程序员要避免的五种程序注释方式
- 千万要避免的五种程序注释方式
- 千万要避免的五种程序注释方式
- 千万要避免的五种程序注释方式
- 【转载】C++程序设计之四书五经/C++学习书籍介绍
- weblogic11g cluster 配置说明
- 甲骨文PK谷歌背后:开源软件走向何方
- Mozilla Firefox 4.0 Beta 4候选版build2放出
- (转帖)既是老师又是师兄的临别赠言
- 如何写安全的网络通讯服务器程序----避免程序崩溃的几种方式
- MPB以及周围软件的浅谈介绍
- 熟悉业务是做好行业软件开发的基础
- poj1847
- C#连接SQL数据库
- 高通创新中心加入Linux基金会 促进开源软件发展
- 实现网站的RSS应用
- 重新认识Unix市场
- 手机客户端适配性