首页 > 解决方案 > 在测试中写入套接字文件描述符并使用 recv() 读取它们

问题描述

我的代码循环和调用recv(),聚合 TCP 字节以创建应用程序消息。

因为逻辑很复杂,我想在单元测试中复制它。我不想模拟(并将函数调用转移到其他地方)。我想要write()一个文件描述符并执行我的代码调用recv()

在测试中,我write()为描述符创建了一个套接字和字节:

MY_TEST()
{
    int sock = socket(AF_INET , SOCK_STREAM , 0);
    write(sock, testData, sizeof(testData));
    char* packets = getPackets(sock);
}

但是,上面的代码在以下情况下崩溃write()

received signal sigpipe broken pipe

我想这是因为我没有打电话connect()

有没有一种简单的方法可以在测试中将字节写入文件描述符并使用 接收它们recv()

标签: clinuxsocketsnetwork-programmingrecv

解决方案


推荐阅读