C# 获取发送数据的IP地址 不是本机的

来源:百度知道 编辑:UC知道 时间:2024/06/05 19:47:13
C#语言winform 公司的传感器接在我们的局域网里面,每一分钟向我的IP发送一次数据,我能用TcpListener监听端口并且接收到发送的数据,但是没有办法获得发送数据的那个IP。高手们帮帮忙啊!!!

如果是用的C#的知,你的接收端应当还有这样一个实例:
TcpClient client = _listener.AcceptTcpClient();

这个client中一定有对方IP的.
client.Client.RemoteEndPoint;
client.Client.LocalEndPoint;

ARP是由协议地址获取物理地址的协议(RFC826)
一.ARP高速缓存
1.一个高速缓存的存活时间是20分钟
疑问:
高速缓存有哪些创建途径
高速缓存超过时效后,怎样处理,是否要删除呢,如果超时的时候,有程序正在使用这个条目怎样处理
如果在存活时间内,收到一个免费ARP,是不是从新开始计时
典型的缓存机制,以后设计缓存机制可参考其做法
二.ARP的格式
发送请求的IP地址请求的IP地址
------------------------------------
发送请求的物理地址(要获取的物理地址)
需要注意的是请求获得物理地址的IP地址必须是一个host地址,不能是一个广播地址,对于这样的ARP是不会有应答的
三.ARP处理流程
1.ARP的发送
请求方发送ARP请求,设置超时,设置发送次数
2.ARP请求的接收
一台主机收到一个ARP请求,首先获取发送IP地址和物理地址,更新自己的ARP缓存,然后比较请求IP地址是否是本机,如果是就回复,如果不是就抛弃该包。
3.ARP响应的接收
由于从发送ARP请求到接收到ARP响应需要一定的时间,这样就需要考虑怎样处理,在这期间由上层发送的数据,是缓存这些数据,还是丢弃这些数据,等收到ARP响应后,等待上层重传,依赖于具体的实现
四.ARP代理
只有IP地址在一个逻辑网络内的时候,才发送ARP请求物理地址,但是有些时候虽然处于同一个子网,但是不处于同一个物理网络,这样就收不到ARP广播,这时候就需要ARP代理,代理这些地址获取数据包,然后再转发。