Unix网络编程思想
一、为什么使用包裹函数任何现实世界的程序都必须检查每个函数调用是否返回错误。当某个函数发生错误时,就调用我们自己的err_quit或err_sys函数输出一个错误消息并终止程序的运行(当然有时候并非简单的终止程序运行,还需要检查问题所在:系统调用是否被中断了)。 listenfd = Socket(AF_INET,SOCK_STREAM,0);
包裹函数Socket定义为: int Socket(int family,int type,int protocol)
{
int n;
if ((n = socket(family,type,protocol)) < 0)
err_sys("socket error");
return n;
}
因此,在UNP课程后面的所有例子中,我们建议使用包裹函数的形式,不仅缩短了代码,有利于开发者看清楚具体的功能实现;而且考虑了对于每一步的出错信息及处理,使代码更具有健壮性。 二、Unix errno值只要一个Unix函数(例如某个套接字函数)中有错误发生,全局变量errno就被置为一个指明该错误类型的正值,函数本身则通常返回-1。 三、TCP通信流程基于TCP(面向连接)的socket编程,分为服务器端和客户端 服务器端的流程如下: 客户端的流程如下: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |