我将创建建立TCP连接的内核模式驱动程序级应用程序,这是我的要求:
您是否知道退出TCP实现它不使用OS套接字库?
答案 0 :(得分:3)
我认为提出这个问题的正确方法是:
在内核代码中执行TCP套接字的正确方法是什么?
而且我不确定你是否只想在数据包级别进行TCP,因为你也可能想要处理TCP分段,IP分段,仅在远程窗口大小允许时发送,以及生成ACK。换句话说,如果您在内核模式下执行TCP服务器,则需要整个内核TCP堆栈。
无论如何,Bing或Google都在寻找“内核套接字”或“ksocket”。
对于Linux:http://ksocket.sourceforge.net/另外,请查看this example以获取UDP。
对于Windows:转到this page并下载HttpDisk和KHttpd示例。两者都具有Windows设备驱动程序,而不是使用类似的“ksocket”库。 (在每个中查找ksocket.c和ksocket.h)
答案 1 :(得分:1)
对于Linux,请使用常用套接字API的kernel_*()
版本,即kernel_bind()
,kernel_listen()
,kernel_accept()
,kernel_connect()
。它们位于#include <linux/net.h>
中,其使用方式与“普通”套接字非常相似。
Solaris具有非常相似的接口,名为ksocket_*()
,请参阅#include <sys/ksocket.h>
以获取参考。
对于* BSD UN * X风格,Apple的Network Kernel Extensions Guide提供了一些细节(也参考了Free / Net / OpenBSD上相应的接口)。
不了解Windows。