jjzjj

ruby - 如何仅使用标准套接字库在 Ruby 中实现 ICMP ping?

应该可以使用Ruby套接字库发送和接收ICMP数据包,但我没有看到任何关于此的好文档。我不想使用net-ping、icmp、ping和所有这些其他库,它们要么因跨平台问题而失败,需要devkit和自定义构建,它们在构建过程中失败,被忽略并且有很长一段时间没有更新,和/或只是一般的错误。有没有人有关于如何完成这个的任何好的文档?我想发送ICMP回显回复,而不是TCP或UDP数据包。 最佳答案 阅读DanielBerger关于他的Net-ping项目的代码,我能够看到他是如何做到的。http://rubygems.org/gems/ne

go - 在 golang 中解析 icmp 消息时遇到问题

我是Golang的新手,正在尝试完成一项看似非常简单的任务——发送一个带有一些文本的ping,并在收到回复时读回该文本,但我遇到了一些问题我不明白。我建立了这样的ping:ping:=icmp.Message{Type:ipv4.ICMPTypeEcho,Code:0,Body:&icmp.Echo{ID:os.Getpid()&0xffff,Seq:1,Data:[]byte("Hello"),},}这是上下文的套接字读取部分:buf:=make([]byte,1500)_,peer,err:=c.ReadFrom(buf)message,err:=icmp.ParseMessage

ICMP协议详解

ICMP协议详解文章目录ICMP协议详解ICMP协议概览ICMP协议使用原因ICMP工作原理ICMP工作情况ICMP的应用ICMP安全ICMP协议概览因特网控制报文协议ICMP(InternetControlMessageProtocol)是一个差错报告机制,是TCP/IP协议簇中的一个重要子协议,通常被IP层或更高层协议(TCP或UDP)使用,属于网络层协议,主要用于在IP主机和路由器之间传递控制消息,用于报告主机是否可达、路由是否可用等。这些控制消息虽然并不传输用户数据,但是对于收集各种网络信息、诊断和排除各种网络故障以及用户数据的传递具有至关重要的作用。ICMP协议使用原因​在数据传输的

python - python 套接字中的无效端口

尝试使用以下代码段发送裸ICMP消息时出现错误:Windows说此端口对于给定的IP范围无效。defsend_ping(source_ip,target_ip,data_function=construct_icmp_echo):fail=0skt_send=socket.socket(socket.AF_INET,socket.SOCK_RAW,socket.IPPROTO_ICMP)skt_recv=socket.socket(socket.AF_INET,socket.SOCK_RAW,socket.IPPROTO_ICMP)(src_binary,)=struct.unpack

windows - 在 Windows 上,ICMPv6 回显回复缺少 IP header

当使用ASIO-BOOST库接收ICMPv6回显回复时,我在Windows7上遇到了一个奇怪的问题。收到的数据缺少IPheader,它只有ICMPheader和有效负载。下面是更多详细信息://IPv4replyBuffer.consume(replyBuffer.size());mySocketIPv4->async_receive(replyBuffer.prepare(65575),..);--packetreceived--replyBuffer.commit(length);std::istreamistr(&replyBuffer);icmp_headericmp_hdr;

windows - 什么类型的网络流量不使用 Windows 中的 Winsock?

我正在开发一些低级的东西(LSP)并发现SMB流量不通过LSP,因为SMB不使用Winsock。MSDN中有一段关于它的内容,但这是MSDN中专用于WindowsCE的部分。那么,是否有任何不通过Winsock的完整流量的完整列表?MSDN对此有点困惑。我现在发现:中小企业ICMP 最佳答案 有趣-我一直认为一切都是通过winsock进行的。来自MSDN(我相信这不仅仅是您已经找到的相同信息):NoteBecausethefollowingprotocolsandtechnologiesdonotusetheWinsockLSPmo

c++ - 原始 ICMP 套接字 : recvfrom() not recieving any data

以下代码是一个旨在发送ICMP回显请求和接收回复的程序。/*Forgivemylackoferrorhandling:)*/SOCKETASOCKET=INVALID_SOCKET;structsockaddrsaddr;structsockaddr_in*to=(structsockaddr_in*)&saddr;structsockaddr_infrom;intfromsize=sizeof(from);std::stringip="[arbitraryipaddress]";structICMP{USHORTtype;USHORTcode;USHORTcksum;USHORTid

java - 如何在 Java 中使用 ICMP 和跟踪路由

Java没有用于ICMP和跟踪路由的原语。如何克服这个?基本上,我正在构建应该在*nix和Windows中运行的代码,并且需要一段可以在两个平台上运行的代码。 最佳答案 这是我今天写的用Java来“实现”traceroute命令的内容。我只在Windows中测试过,但它应该也可以在Linux中使用,尽管有几个traceroute工具可用于Linux,因此很可能需要对这些程序的存在进行一些检查。publicclassNetworkDiagnostics{privatefinalStringos=System.getProperty("

java - Jnetpcap,准备UDP/TCP/IP/ICMP数据包

最近,我正在使用Jnetpcap通过网络发送/接收原始数据包。Jnetpcap提供通过Pcap.sendPacket()发送数据包。此方法获取要发送的原始缓冲区或字节。另一方面,org.jnetpcap.protocol.*类包装了协议(protocol)头,我们可以使用它们来解码捕获的数据包。当我使用下面的代码制作一个Ip4数据包时,它会导致NullPointerException:importorg.jnetpcap.protocol.network.Ip4;publicclassTest{publicstaticvoidmain(String[]args){Ip4ip4=newI

java - 用java Ping到多平台

我需要对某些​​ip/机器执行ping。该代码可以在任何类型的平台(windows、linux、mac)上执行,我需要获取有关丢失和往返时间的信息。所以java的ping执行程序不够好,因为我需要将ping响应解析为字符串,这因平台和操作系统语言而异。那我需要做什么?我知道有类似JNI的东西,但我是Java的新手,所以在这里需要一点帮助。这仍然意味着我需要每个平台都有本地实现吗?有什么例子或建议吗? 最佳答案 由于java不是平台独立的,您可以使用System.getProperty("os.name")询问您拥有哪个操作系统并解析