2

我有将数据写入文件的第三方 C 代码。我想修改该代码,以便将完全相同的数据写入数据报套接字。

FILE指向第三方代码的指针被处理以确定要使用的文件。数据以独占方式写入文件fwrite()

write()如果代码使用而不是fwrite()因为write()适用于套接字和文件,一切都会好起来的。它需要一个整数作为文件描述符,它既是数据类型又是socket()返回open()值。

但是,由于第三方代码使用了fwrite(),所以这个任务并不容易。我想知道完成这项任务的最佳方法是什么。

我应该编写一个与内部使用fwrite()的原始功能相同的函数吗?或者是否有将整数文件描述符“投射”到的技巧?fwrite()write()FILE*

4

1 回答 1

3

FILE *您可以使用以下方法将套接字转换为fdopen

FILE *fdopen(int fd, const char *mode);

我希望您使用的是顺序数据报协议(即 Unix 数据报套接字,而不是 UDP 套接字),否则,您的数据将会变得混乱。

如果您使用的是 UDP:数据包可以任意丢弃或重新排序,并且由于使用 UDP 的代码FILE *假定它正在写入磁盘,因此当您尝试将所有内容放在另一边时,您会遇到很大的麻烦。

于 2012-04-05T09:08:00.403 回答