在套接字编程中返回指向结构的指针

时间:2011-07-22 11:28:57

标签: c linux sockets opendir

在我的一个项目中,客户端程序中的opendir()调用使用LD_PRELOAD进行干预并发送到文件服务器进行处理(我在调用opendir()之前在服务器中进行了一些日志记录)。因此,呼叫通过套接字。现在我如何通过套接字将指针返回到服务器到客户端的DIR结构(从opendir()调用返回)。我将它转换为字符串并发送吗?

1 个答案:

答案 0 :(得分:6)

客户端和服务器具有不同的地址空间,即使它们位于同一台计算机上也是如此。因此,您不可能通过套接字发送指针并期望它在另一端执行任何有意义的操作。

执行此类操作的一种有效方法是将结构放在共享内存部分中,并将偏移发送到共享内存区域。显然,只有当客户端和服务器位于同一台物理机器上时,它才会起作用 编辑:
而且,即使这对于读取数据也是如此,你应该(显然)要小心调用closedir之类的函数,或者将内存从其他进程中释放出来。这些事情几乎肯定意味着非常糟糕的运气(从某种意义上说:现在你将会死去)。

在客户端和服务器位于不同机器上的“正常”情况下,根本无法做到这一点。当然,您可以发送字符串数据或序列化数据,但绝不会发送指针或类似内容。