浅析Linux Socket套接字编程中的 5 个隐患
隐患 1.忽略返回状态 第一个隐患很明显,但它是开发新手最容易犯的一个错误。如果您忽略函数的返回状态,当它们失败或部分成功的时候,您也许会迷失。反过来,这可能传播错误,使定位问题的源头变得困难。 捕获并检查每一个返回状态,而不是忽略它们。考虑清单 1 显示的例子,一个套接字 send 函数。 忽略 API 函数返回状态 intstatus,sock,mode; /*Createanewstream(TCP)socket*/ sock=socket(AF_INET,SOCK_STREAM,0); ... status=send(sock,buffer,buflen,MSG_DONTWAIT); if(status==-1){ /*sendfailed*/ printf("sendfailed:%s\n",strerror(errno)); }else{ /*sendsucceeded--ordidit?*/ } 探究一个函数片断,它完成套接字 send 操作(通过套接字发送数据)。函数的错误状态被捕获并测试,但这个例子忽略了 send 在无阻塞模式(由 MSG_DONTWAIT 标志启用...



