如何使用以太网的帧格式发数据?(100分)

  • 主题发起人 主题发起人 ghifi37
  • 开始时间 开始时间
G

ghifi37

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在有一个单片机控制的网络设备需要连接到局域网中进行调试,因为用单片机来实现
高层的网络协议(例如TCP/IP等)要写太多的代码,而且对于我来说也没必要,所以我想
直接利用以太网的帧格式来进行调试,那样我只需要本地的MAC地址和对方的MAC地址,再
加上要发送的数据就可以发送一个IP包完成通讯,我在单片机端也就可以不用实现ARP协
议,可以不用处理IP地址。我想到两种可能的方法:调用某条可以操作网卡的API,直接对
MAC操作;或我的单片机实现ARP,本地机通过IP地址发送,在本地ARP中转换为MAC地
址,这样的话我不希望软件给我的以太帧添加TCP头之类的东西,让IP包只有我欲发送的
信息。第一个方法是最好的,请各位帮帮忙,小弟感激不净!
 
大家帮帮忙吧!
 
单片机的另一端是PC机吗?
如果是的话我想你可能要为你的网卡单独写一个协议驱动程序了(尤其在Windows系列下) [:(]
除非你的单片机使用现成的网络协议......
 
单片机的另一端是PC机
我有这么一个想法,在PC中采用ARP -S 建立一个IP地址到MAC地址的映射,然后对此IP发
UDP包,然后在单片机中直接跳过附加的头,直接处理报文?
如果这样的话,单片机发数据就要加入附加头,我又不想增加这个开销(主要是不会,呵
呵),在delphi中有没有直接处理IP包的方法,不经过层层剥削?
 
你可以试着查一下NDIS的相关资料(不仅是delphi,其他语言都办不到的,只有在驱动层想办法),不过要用 Delphi 写驱动程序,怕是有些难度的。
不过在单片机这边写协议,也是可想而知的......
 
那就先请教一个具体的问题,如果利用dephi6中FastNet面板的NMUDP控件发送一个udp包,
内容为“hello”,那么实际发送的ip包被添加了哪些头?可以给一个格式吗?如果ip包
长度不够46字节,是否会自动填充?
 
谁能帮帮忙啊?
 
算了,我用netxray吧
 
请问netxray又是怎么做到的呢?
 
我不知道你的问题是不是真的象你想象得那么难!

不知道你用的什么单片机,不过一般来说有为单片机而设计的各类网络接口模块(甚至是整个解决方案),直接拿来用就可以了。如果上位机和下位机相距不远,为什么不用廉价的串口解决方案?成熟多了!

还有如果应用比较复杂的话,为什么不考虑两边都用PC?
 
实际上要直接操作网卡了,EtherNet的封包格式是公开的,不过我觉得在链路层实现起来比网络层的Ip更困难
 
我希望你用串口控制单片机
 
后退
顶部