【发布时间】:2017-10-04 19:46:46
【问题描述】:
我想通过 tcp 从我的 linux 内核模块发送一些数据。 我尝试使用来自 http://www.avrfreaks.net/sites/default/files/tcp-server-send-recv.c 的一些代码,但是代码太旧(它使用了旧的 linux 内核 api)。 另外,我试图理解https://github.com/abysamross/simple-linux-kernel-tcp-client-server/blob/master/network_server.c,但它对我来说太复杂了:)
我只想通过 tcp 向指定的 IP 地址发送一些小数据。我该怎么做?
【问题讨论】:
-
模块只会发送数据? -- 你指出的例子是一个服务器的例子。如果需要发送数据,必须查看客户端示例。
-
是的,我需要一个只发送数据的模块。客户端的实际代码很难找到,我认为可以修改服务器的代码。
-
在同一个项目中检查client example,如果你重用一些函数,你必须理解和修改
tcp_client_connect函数(第124-198行)。您可以重用sock_create函数来创建连接套接字,tcp_client_send用于发送数据,tcp_client_receive用于接收响应。 -
我尝试做一些类似的动作,但是没有成功。我应该怎么做? 1) 调用 sock_create() 2) 调用 tcp_client_send()?
-
您遇到了什么问题? -- 该示例适用于内核模块。尝试仅修改客户端模块以发送您想要的数据。如果它编译,您可以加载到您正在运行的系统中。您可以检查内核日志中的模块消息和错误(检查 dmesg)。如果您有问题,您可以发送另一个问题,显示部分代码和错误消息。
标签: c linux sockets tcp linux-kernel