当前位置: 技术问答>linux和unix
高分求助:内核模块编程中如何实现网络通信
来源: 互联网 发布时间:2015-07-07
本文导语: 由于要编译成可加载模块的形式,因此 编程存在很大的限制.我初步方法是利用内核源代码中的SOCKET实现代码,在此代码的基础上实现socket通信. 内核源代码中socket实现的代码为/net/socket.c,此文件实现了整个socket相...
由于要编译成可加载模块的形式,因此 编程存在很大的限制.我初步方法是利用内核源代码中的SOCKET实现代码,在此代码的基础上实现socket通信.
内核源代码中socket实现的代码为/net/socket.c,此文件实现了整个socket相关的所有方法,但进行独立编译时很多错误,可能是倚赖性和头文件的问题,由于该源代码涉及到的其他文件和头文件很多,再加上自己水平有限,调试了很久都没有进展,目前处于崩溃边缘.
以前从没有做过内核模块的网络通信(LINUX下的socket通信倒是做过),不知道有没有其他实现方法,如果能直接用常用的sokcet API是最好的,但是在内核模块编程中应该如何利用呢?或者还有没有其他思路,万分感谢!
内核源代码中socket实现的代码为/net/socket.c,此文件实现了整个socket相关的所有方法,但进行独立编译时很多错误,可能是倚赖性和头文件的问题,由于该源代码涉及到的其他文件和头文件很多,再加上自己水平有限,调试了很久都没有进展,目前处于崩溃边缘.
以前从没有做过内核模块的网络通信(LINUX下的socket通信倒是做过),不知道有没有其他实现方法,如果能直接用常用的sokcet API是最好的,但是在内核模块编程中应该如何利用呢?或者还有没有其他思路,万分感谢!
|
简单的方法是,看看SOCKET是如何实现的,照做不就行了?
|
我也想知道,顶一下
|
用这样试试
int con;
SOCKET sock;
memset(&sock,0,sizeof(sock));
struct sockaddr_in S_addr;
S_addr.sin_family = AF_INET;
S_addr.sin_port = htons(8000);
S_addr.sin_addr.s_addr = inet_addr("10.8.6.202");
sock = socket(AF_INET,SOCK_STREAM,0);
if(sock
int con;
SOCKET sock;
memset(&sock,0,sizeof(sock));
struct sockaddr_in S_addr;
S_addr.sin_family = AF_INET;
S_addr.sin_port = htons(8000);
S_addr.sin_addr.s_addr = inet_addr("10.8.6.202");
sock = socket(AF_INET,SOCK_STREAM,0);
if(sock