Re: How to listen to more a specific IP and specific ports
- From: Bassam <Bassam@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Wed, 28 Jun 2006 20:45:01 -0700
Dear Alexander,
Thanks for your clarification. Its clear to me on how to bind with
specific ports. My intention is to have a general solution in which I can
bind my socket to specific unlimited and selective IP addresses.
For example, a server machine has 5 interfaces, each one is configured with
different subnet mask. At the time being I want to bind my server application
service to two IP addresses and in the future I want to bind to the third or
fourth ones. It is not feasible and practical to everytime edit my code and
add or remove the socket combinationes!!?.
Moreover, in Unix/Linux Berekly network programming, you can determin the IP
addresses that you may want to bind to. As I remeber, instead of using
INADDR_ANY, you can specify the IP addresses that you may want to bind to.
Please, get more clarification about this matter, whether possible to do it
with microsoft network programming or not.
Regards
Bassam
"Alexander Nickolov" wrote:
You need 4 sockets bound to each combination of IP address.
and port (2 IP addresses times 2 ports amounts to 4 sockets
necessary). If the computer only has these two IP addresses
and you don't mind listening to the loopback address, you
can use two sockets with INADDR_ANY and the two specific
port numbers.
--
=====================================
Alexander Nickolov
Microsoft MVP [VC], MCSD
email: agnickolov@xxxxxxxx
MVP VC FAQ: http://www.mvps.org/vcfaq
=====================================
"Bassam" <Bassam@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:77BD5E60-9D57-484E-830E-E5456812B472@xxxxxxxxxxxxxxxx
Dear all,
I am writing a network application that requires me to bind it to
specific network IP addresses and specific ports.
The normal binding resides in filling up the SOCKADDR_IN structure with
any
IP "INADDR_ANY" or a particular IP "192.168.1.148" and a single port as
follows:
SOCKADDR_IN tcpaddr;
int port = 1812;
tcpaddr.sin_family = AF_INET;
tcpaddr.sin_port = htons(port); //Single port
tcpaddr.sin_addr.s_addr = htonl(INADDR_ANY); //Any IP
or
tcpaddr.sin_addr.s_addr = htonl("192.168.1.148"); //A particular IP
Also this can be achieved by filling up the ADDRINFO structure of the
hints
parameter of the address resolution function "getaddrinfo()" as follows:
ADDRINFO hints;
LPADDRINFO resultPtr = NULL;
memset(&hints, 0, sizeof(hints));
hints.ai_flags = AI_PASSIVE; //to determin any IP
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
getaddrinfo(NULL, "1812", &hints, &resultPtr);
The first argument of "getaddrinfo()" is NULL to determin that we are
willing to bind to any IP, and the second argument is a single port.
NOW: my question is how to listen to traffic coming through particular IPs
(i.e., "192.168.1.148" and "192.168.10.30") on the server machin and
particular ports 1812 and 1813 at the same time?
Do I need to bind my single socket handler to different SOCKADDR_IN
structures each has its own IP address and port no.. However, I find this
way
is not feasible because the particular IPs are not fixed. I mean sometime
I
need to listen to one or two or more particular IPs.
I would appreciate if you shed light on this matter.
Regards
Bassam
- Follow-Ups:
- Re: How to listen to more a specific IP and specific ports
- From: Alexander Nickolov
- Re: How to listen to more a specific IP and specific ports
- From: Arkady Frenkel
- Re: How to listen to more a specific IP and specific ports
- References:
- Re: How to listen to more a specific IP and specific ports
- From: Alexander Nickolov
- Re: How to listen to more a specific IP and specific ports
- Prev by Date: Re: ARP Spoofing Defense
- Next by Date: Re: Supporting SSL/TLS
- Previous by thread: Re: How to listen to more a specific IP and specific ports
- Next by thread: Re: How to listen to more a specific IP and specific ports
- Index(es):
Relevant Pages
|