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

Lip*_*eka 1 c sockets linux opendir

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

Dam*_*mon 6

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

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

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