一些背景信息:
我正在实现与FPGA的以太网通信。 FPGA没有实现ARP和其他协议如icmp for ping,它只是发送和接收UDP数据包。为了在FPGA上实现以太网接收功能,我正在用C#编写一个程序来发送数据包,然后从FPGA中读取答案(如果我的接收功能正在工作,FPGA应该发送相同的数据包)。它是FPGA与计算机之间的点对点连接,无交换机或路由器。
现在问题: 如果我尝试发送到正常网络(与其他计算机,200.200.200.x),现有或不是IP,一切都很好,wireshark显示数据包已发送。但是,如果我尝试使用我的FPGA发送到网络,192.168.25.x(192.168.25.25是FPGA),我看到没有数据包发送到wireshark。
我做了什么:
我为FPGA添加了一个静态arp条目:
arp -s 192.168.25.25 00-00-DE-AD-BE-EF
我为FPGA添加了一个静态arp条目。
尝试添加一条静态路由,然后将其删除,好吧,路由播放很多(顺便说一下,我的PC网络接口是192.168.25.10):
route add 192.168.25.25 192.168.25.10
设置Windows防火墙以允许此应用程序上的UDP流量
现在的程序,在C#中(删除了windows窗体的GUI,不要膨胀帖子,我只保留网络细节。无论如何,我们知道程序工作一般,我们只是调试网络):< / p>
using System.Net;
using System.Net.Sockets;
Socket udpSocket;
udpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
udpSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.DontRoute, true);
ipDestinationEndPoint = new IPEndPoint(IPAddress.Parse("192.168.25.25"), 4096);
ipLocalEndPoint = new IPEndPoint(IPAddress.Parse("192.168.25.10"), 4096);
udpSocket.Bind(ipLocalEndPoint);
udpSocket.SendTo(data, ipDestinationEndPoint);// (data is a byte array defined earlier)
编辑: 当我检查Windows适配器统计信息时,它显示一些数据包已经发送,netstat也显示它,该数据包是通过正确的接口发送的。但是wireshark没有显示任何内容,当我将示波器的探针连接到我的phy(FPGA端)上的接收线时,我什么都没看到。