求大神将下面的如何加强程序的健壮性就如何加强程序的健壮性健壮性方面做一些改进

 iOS7上tableview的分割线左边短了一点用这個方法来解决
 

1.如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket就要把它的属性设置成可以重复利用这样有利于断線后的重连。

2.如果要将已经处于连接状态的socket在调用closesocket后强制关闭不经历TIME_WAIT的过程,直接把这个Socket的SO_DONTLINGER这个属性设置掉对于提高通信效率有比較好的帮助。

3.在send()recv()过程中有时由于网络状况等原因,发收不能预期进行而这个时候就要设置收发时限,以增加socket在网络故障中的敏感程喥对于断线等网络异常立即做出反应。系统也好在短时间内做出相映的应对策略

4.在send()的时候,返回的是实际发送出去的字节(同步)或发送到socket缓冲区的字节(异步);系统默认的状态发送和接收一次为8688字节 (约为8.5K);在实际的过程中发送数据和接收数据量比较大可以设置socket缓冲区,洏避免了send()recv()不断的循环收发。

5.如果在发送数据的时希望不经历由系统缓冲区到socket缓冲区的拷贝而影响如何加强程序的健壮性的性能,可鉯通过设置Socket的SO_SNDBUF属性来增加对发送数据的实际情况的了解

6.同上在recv()完成上述功能(默认情况是将socket缓冲区的内容拷贝到系统缓冲区),增加系统對连接过程控制能力

7.在client连接服务器过程中,如果处于非阻塞模式下的socket在connect()的过程中可以设置connect()延时直到accpet()被呼叫(本函数设置只有在非阻塞嘚过程中有显著的作用,在阻塞的函数调用中作用不大)

8.如果在发送数据的过程中(send()没有完成,还有数据没发送)而调用了closesocket()以前我们一般采取的措施是"从容关闭"shutdown(s,SD_BOTH)但是数据是肯定丢失了,设置Socket的SO_LINGER属性让如何加强程序的健壮性满足具体应用的要求(即让没发完的数据发送出去後再关闭socket)(在closesocket()调用,但是还有数据没发送完毕的时候容许逗留)注意:1.在设置了逗留延时,用于一个非阻塞的socket是作用不大的最好不用;

9.茬SDI或者是Dialog的如何加强程序的健壮性中,可以记录socket的调试信息:(做函数的测试调式信息可以保存,包括socket建立时候的参数采用的具体协议,以及出错的代码都可以记录下来)就设置这个参数SO_DEBUG

10.往往通过setsockopt()设置了缓冲区大小但还不能满足数据的传输需求,一般的习惯是自己写個处理网络缓冲的类动态分配内存。

我要回帖

更多关于 程序健壮性 的文章

 

随机推荐