当前位置:  开发笔记 > 运维 > 正文

在ICMP套接字上接收数据

如何解决《在ICMP套接字上接收数据》经验,为你挑选了1个好方法。

当在ICMP套接字上接收时(带有IPPROTO_ICMP的SOCK_RAW),由于ICMP协议中没有"端口"的概念,应用程序如何确定接收的数据包不是某些其他TCP/UDP /任何套接字传输的一部分也在同一时间发生?

例如,假设您有一个包含2个线程的应用程序.线程1设置TCP服务器套接字,并持续从连接的客户端接收数据.线程2使用ICMP套接字连续向同一客户端发送echo请求包(ping),然后接收echo reply.什么是阻止线程2接收其中一个TCP数据包?



1> Adam Liss..:

ICMP是与TCP和UDP不同的协议,由IP报头中的协议字段确定.当您打开套接字时IPPROTO_ICMP,您告诉套接字仅发送和接收具有其协议字段设置为ICMP的IP头的数据包.

类似地,套接字打开IPPROTO_TCPIPPROTO_UDP仅响应其IP头包含分别设置为TCP或UDP的协议字段的数据包.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有