在Linux中使用原始套接字直接通过线路发送和接收数据(想要跳过Linux TCP / IP堆栈),callin class TestSpec extends BetterSpec {
"Test DAO" should {
"work" in {
val dao = daoContext.testDAO
// test it, finally
}
}
}
有什么好处吗?
通过将sockaddr结构传递给bind()
和sendto()
调用,可以通过phsyical接口发送和接收数据,如下所示:
recvfrom()
可以指定此方法中的接口在进行int tx_int = sendto(sock_fd, frame_buffer, 1514, 0, (struct sockaddr*)&sockaddr_ll, sizeof(struct sockaddr_ll));
int rx_len = recvfrom(sock_fd, frame_buffer, 1514, MSG_DONTWAIT, NULL, NULL);
呼叫时进行传输,以及在进行sendto()
呼叫时从哪个接口接收数据包。这对我来说很好,但我看到其他人在使用原始套接字时使用recvfrom()
。不这样做会有一些重大的短缺吗?