如何使用 Winsock 从数据报的 IP 标头中获取源 IP 地址?

Posted

技术标签:

【中文标题】如何使用 Winsock 从数据报的 IP 标头中获取源 IP 地址?【英文标题】:How do I get the source IP address from a datagram's IP header with Winsock? 【发布时间】:2008-12-07 03:38:14 【问题描述】:

我有一个绑定()到 INADDR_ANY 的端口。我正在成功接收数据报。收到后需要读取IP头获取源IP地址。

【问题讨论】:

【参考方案1】:

如果你使用标准的 recv 或 read 函数调用,我不相信你能得到它。 recvfrom 调用如下:

int recvfrom(
  __in         SOCKET s,
  __out        char *buf,
  __in         int len,
  __in         int flags,
  __out        struct sockaddr *from,
  __inout_opt  int *fromlen
);

包含一个结构(上面倒数第二个字段),它将接收源地址,您可以根据需要检查该地址。

【讨论】:

以上是关于如何使用 Winsock 从数据报的 IP 标头中获取源 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章

TCP如何识别应用层协议?

UDP数据报的最小长度是多少 UDP数据报的

如何在内核模式驱动程序中使用 Winsock Kernel (WSK) 发送原始套接字数据包?

winsock多IP发送数据vb6

IPv4与IPv6数据报格式

(高级问题)关于IP数据报的服务类型字段(TOS)问题