编写可移植网络程序与Shell代码的深入解析
可移植网络编程基础
在网络编程中,编写可移植的代码是一项重要挑战,因为不同操作系统(如UNIX和Windows)在网络API的实现上存在显著差异。以下是一些关键函数及其在不同平台的使用情况。
1. select() 函数
select() 函数用于监视多个文件描述符的状态变化。在UNIX和Windows中,其使用方式有所不同。在Windows中,作为第一个参数传递的0仅用于与BSD套接字兼容,而在UNIX中,该参数的值很重要。代码示例如下:
#ifdef WIN32
ret = select(0, &fdset, NULL, NULL, &tv);
#else
ret = select(sd + 1, &fdset, NULL, NULL, &tv);
#endif
在错误处理方面,Windows使用 SOCKET_ERROR 常量进行比较,而UNIX则与0比较:
#ifdef WIN32
if(ret == SOCKET_ERROR)
#else
if(ret < 0)
#endif
{
printf("错误 select().\n");
return(1);
}
超级会员免费看
订阅专栏 解锁全文
1033

被折叠的 条评论
为什么被折叠?



