【发布时间】:2010-10-05 12:37:08
【问题描述】:
我正在编写一个 API,其中包含 IPC 函数,这些函数将数据发送到另一个可能是本地或另一个主机上的进程。我真的很希望发送功能如此简单:
int mySendFunc(myDataThing_t* thing, int sd);
调用者不必知道——在 mySendFunc() 调用的直接上下文中—— sd 是指向本地进程还是远程进程。在我看来,如果我可以这样的话:
switch (socketFamily(sd)) {
case AF_UNIX:
case AF_LOCAL:
// Send without byteswapping
break;
default:
// Use htons() and htonl() on multi-byte values
break;
}
有人建议我可以将 socketFamily() 实现为:
unsigned short socketFamily(int sd)
{
struct sockaddr sa;
size_t len;
getsockname(sd, &sa, &len);
return sa.sa_family;
}
但我有点担心 getsockname() 的效率,想知道我是否可以负担得起每次发送。
【问题讨论】:
-
我注意到你的最后一个问题,我已经编辑了我的帖子。