我正在编写一些代码来执行一些读取TCP套接字的C代码的集成测试。代码是以这样的方式编写的,我可以轻松地将它传递给任何FILE *
,所以我对测试代码的初步想法是使用UNIX套接字来代替在测试过程中完全伪造网络交互。我唯一挂断的是UNIX套接字需要一个文件路径来创建套接字,这意味着我需要处理查找/创建/销毁一个唯一临时目录的复杂性,并确保每个单独的测试都获得一个唯一的套接字名称目录。管道具有一切都在内存中的属性,因此它们易于设置/拆除。但是管道只是单向的,它们不能符合我需要的FILE *
接口。
答案 0 :(得分:0)
引用Nominal Animal
,如果他们提交评论作为答案,我会删除并接受他们的评论。
您可以使用
socketpair()
创建一对连接的套接字。例如,如果Query q = em.createQuery("select distinct c from Cases c where " + "c.name like :name and " + "c.title like :title");
int sockfd[2], err = socketpair(AF_UNIX, SOCK_STREAM, 0, sockfd);
创建一对连接的Unix域流套接字(否则请参见err == 0
)。一端是strerror(err)
,另一端是sockfd[0]