gpt4 book ai didi

c - 如何重写 POSIX C 代码以使用数据报套接字而不是文件

转载 作者:行者123 更新时间:2023-12-03 11:52:17 26 4
gpt4 key购买 nike

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

指向 FILE 的指针被处理到第三方代码以确定使用哪个文件。数据专门使用 fwrite() 写入文件。 .

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

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

我应该写一个fwrite()与原始 fwrite() 完成相同工作的函数使用 write()内部?或者是否有将整数文件描述符“转换”为 FILE* 的技巧?

最佳答案

您可以将套接字变成 FILE *通过使用 fdopen :

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

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

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

关于c - 如何重写 POSIX C 代码以使用数据报套接字而不是文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10025683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com