How to set source address when sending using and UDP socket

前端 未结 2 919
轻奢々
轻奢々 2021-01-13 03:32

I\'ve two pc using VRRP for redundancy. So every PC (Linux) has a physical and a Virtual IP address.

I\'ve a software (C++) with a client/server architecture with UD

相关标签:
2条回答
  • 2021-01-13 03:49

    When the kernel needs to send something through a socket it performs these steps

    • if the socket is bound, use that source address
    • is the socket is not bound, it looks around for interfaces and selects a source address

    So you need to bind(2) your socket to your desired address. For more information: Source Address Selection.

    0 讨论(0)
  • 2021-01-13 03:50

    i'm not sure i understand entirely your question, but in terms of writing C/C++ code on linux at low level, you can import the ip.h header from the linux kernel headers which gives you access to the low level IP packet structure. (UDP works on top of IP)

    #include <linux/ip.h>
    

    and then look at struct iphdr which is the header for every IP packet sent and that contains a saddr member which you can set programmatically to be the source address.

    0 讨论(0)
提交回复
热议问题