在C或c++中有原始的TCP库吗?
Is there any raw TCP library in C or C++?
我将创建内核模式驱动级应用程序,建立TCP连接,以下是我的要求:
- 我不想传递数据到用户模式
- 我不想使用winsocket和OS socket库
- 我只需要传递tcp数据包到一个库和该库为我创建了简单的tcp -客户机或tcp -服务器连接。它应该执行所有TCP连接要求,如TCP握手,生成数据包,计算校验和,设置TCP标志和确认,然后给我新的数据包,这样我就可以将数据包发送到我的网络适配器。
你知道现有的TCP实现不使用OS套接字库吗?
我认为问这个问题的正确方式是:
在内核代码中做TCP套接字的正确方法是什么?
我不确定你想在数据包级别上做TCP,因为你也可能想处理TCP分段,IP分段,只在远程窗口大小允许的情况下发送,以及ACK生成。换句话说,如果你在内核模式下做一个TCP服务器,你需要整个内核TCP堆栈。
在任何情况下,Bing或Google搜索"内核套接字"或"ksocket"。
对于Linux: http://ksocket.sourceforge.net/此外,请查看这个UDP示例。
对于Windows:转到此页面并下载HttpDisk和KHttpd示例。两者都使用windows设备驱动程序,而不是使用类似的"ksocket"库。
对于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的网络内核扩展指南给出了一些细节(也参考了Free/Net/OpenBSD上相应的接口)。
不了解Windows
相关文章:
- C/C++编译器通常会删除重复的库吗
- 我可以在 Arduino 的库文件夹之外安装库吗?
- 我可以将c ++清理器仅应用于程序的一部分而不是第三方库吗?
- cmake 可以包含具有头文件和库文件但没有 .cmake 文件的库吗?
- 我可以在源代码外使用 Clang 库吗?
- C++ 标准库是静态库吗?
- 我可以在编译Qt应用程序的同时忽略Qt的打包库吗?
- 我可以使用 JNI 调用 Python 库吗?
- 我需要SQL服务器才能使用Qt的QtSql库吗?
- 我们可以在 c++ 中使用 POSIX C 库吗?
- 我可以使用 C 程序中的C++模板库吗?
- cmake,我可以从可执行对象构建一个库吗?
- 我们可以在链接期间加载动态库吗
- 我可以使用由C使用dlopen从C++编译的共享库吗
- Linux命令libboost所有的开发人员都安装并编译只包含头的库吗
- 我应该从源代码编译一个库吗
- 我可以创建一个链接另一个库但不依赖于其include的c++库吗
- 我可以从多个目标制作一个库吗
- 我可以在Apache模块中安全地使用Boost和/或C++库吗
- 在C或c++中有原始的TCP库吗?