471,350 Members | 1,720 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,350 software developers and data experts.

Socket Bind (Virtual Local EndPoint)

Hi there,

Please find file for illustrating infrastructure -->
http://test.thipparath.com/GPRS/GPRS.jpg . Gateway receives packets
from Trucks for processing Route/GPS position. When Truck and Gateway
communicate in leased line, Gateway identifies different IP sent by
different truck. Where communicate over internet, NAT Server is used
for sending packets from different Trucks. Here is come to a problem
that Gateway unable to create individual Truck Session for tracking for
each truck GPS position because every packet received from internet is
Same IP address.

Hence, I would like to simulate NAT reverse translation function
(separate source IP in Packets to different IP according to data in
Packet). I decided to develop C# sockets offered in .NET framework. My
application will play 2 roles – 1) Act Server to listen inbound
packet from internet, 2) Act Client to forward captured packet to
Gateway with different IP as the following flows:

1) Create Asynchronous Socket for Listening
2) Reading data by Accepted Socket instance, analyze data ( data
contain SIM No for key ), Lookup Table in Database or Generate virtual
IP
3) Forward data with Different virtual IP

Problem Section (Sending data to Gateway)

// I want to generate virtual IP
IPAddress ipHostAddress = IPAddress.Parse(“192.XX.XX.XXX”);
IPEndPoint localEndPoint = new IPEndPoint(ipHostAddress,0);

Socket sender = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);

sender.Bind(localEndPoint); //  I can’t bind virtual IP
// ( Requsted address invalid in it context ) Socket Exception thrown
sender.Connect(remoteEndPoint);
I sincerely would like to know yours idea in the scenario like this. Is
there any other ways? Thanks in advance.

Feb 15 '06 #1
1 3881
Hello, Jonathan!

You have to bind to an existing IP address.
IMO you can do following:
- generate IP packets using raw sockets ( hard way )
- install virtual pc ( e.g. like VMWare ) and assign different IPs to these virtual PCs ( much easier way )

--
Regards, Vadym Stetsyak
www: http://vadmyst.blogspot.com
Feb 15 '06 #2

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

1 post views Thread by Rolln_Thndr | last post: by
2 posts views Thread by Rene Srensen | last post: by
7 posts views Thread by Colin | last post: by
reply views Thread by Macca | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.