Tag: localhost

环回接口上的客户端服务器连接

我正在尝试使用localhost地址测试客户端 – 服务器简单实现。 这是代码。 服务器: /* * Sequential busy-waiting */ int main(int argc, char** argv) { int opt, client_addr_l, errsv; unsigned short port; struct sockaddr_in server_addr, client_addr; /* … */ printf(“Port number retrieved (%d), server is starting …\n”, port); /*TCP Socket creation*/ sock_ds = socket(AF_INET, SOCK_STREAM, 0); if(sock_ds == -1){ fprintf(stderr, “Socket creation error: %s\n”, […]

将小型UDP数据包从Linux内核发送到LOOPBACK

情况:我的代码基本上被黑客入侵了Linux内核的驱动程序。 我想在用户空间中通知一个关于值得注意的原始事件的应用程序,然后才能将它们发送到主系统。 解决方案的步骤:我在这里找到了一个从内核空间发送UDP数据包的好例子: http : //kernelnewbies.org/Simple_UDP_Server 。 他们使用INADDR_LOOPBACK作为目标地址,这正是我想要的。 由于这是中断上下文,我决定使用工作队列来发送数据包(我得到了BUG:在没有它的情况下进行primefaces调度)。 因此,我的发送代码基于kernelnewbies代码,该代码包含在主进程中使用INIT_WORK和schedule_work触发的工作队列结构中。 我没有宣布自己的工作队列。 我没有使用Netpoll API,因为此问题表明无法从localhost发送数据。 “你不能发给自己” 问题:从内核发送并从我的UDP接收器接收的数据很少匹配。 我不知道为什么会这样。 用于测试的虚拟数据的代码,包括工作队列的结构的定义: static struct socket *sock_send; static struct sockaddr_in addr_send; static struct ksocket_workmessage { unsigned char *buf; int len; struct work_struct workmessage; } workmsg; unsigned char testmsg[] = {‘T’, ‘e’, ‘s’, ‘t’, ‘i’, ‘n’, ‘g’, ‘m’, ‘s’, ‘g’, ‘\0’}; workmsg.buf […]