linux shell命令行向udp端口发送数据

linux shell命令行向udp端口发送数据,第1张

先nc -uv,然后在输入数据即可 nc -uvz可以用来测试udp端口是否开启监听 比如要向本地10001端口发送数据,可以使用 echo "hello" >/dev/udp/localhost/10001 方法二的好处在于,发送完数据后自动退出。当我们需要在命令行下循环向特定udp端口发送数据时,我们只能使用方法二。 例如 while true do echo "xxxx" >/dev/udp/localhost/10001 done

从网络设备驱动程序的结构分析可知,Linux网络子系统在发送数据包时,会调用驱动程序提供的hard_start_transmit()函数,该函数用于启动数据包的发送。在设备初始化的时候,这个函数指针需被初始化以指向设备的xxx_tx ()函数。网络设备驱动完成数据包发送的流程如下:1)网络设备驱动程序从上层协议传递过来的sk_buff参数获得数据包的有效数据和长度,将有效数据放入临时缓冲区。2)对于以太网,如果有效数据的长度小于以太网冲突检测所要求数据帧的最小长度ETH ZLEN,则给临时缓冲区的末尾填充0。3)设置硬件的寄存器,驱使网络设备进行数据发送 *** 作。特别要强调对netif_ stop_queue()的调用,当发送队列为满或因其他原因来不及发送当前上层传下来的数据包时,则调用此函数阻止上层继续向网络设备驱动传递数据包。当忙于发送的数据包被发送完成后,在以TX结束的中断处理中,应该调用netif_wake_queue ()唤醒被阻塞的上层,以启动它继续向网络设备驱动传送数据包。当数据传输超时时,意味着当前的发送 *** 作失败或硬件已陷入未知状态,此时,数据包发送超时处理函数xxx _tx _timeout ()将被调用。这个函数也需要调用由Linux内核提供的netif_wake _queue()函数以重新启动设备发送队列。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7556241.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存