hi wayne
to bind an address to all interfaces you need to use inaddr_any. for
a discussion of this and an example look at:
http://www.powerbasic.com/support/pb...ad.php?t=17653
note that as far as i know the pb implementation does not support
this so you *may* have to resort to using the api.
ymmv
florent
[this message has been edited by florent heyworth (edited january 17, 2001).]
Announcement
Collapse
No announcement yet.
bound socket can only be connected to from the Internet not the LAN due to adapter??
Collapse
X
-
Here are the interfaces on my workstation (i go through the LAN out the server to get to the Internet)
Code:# ADDRESS BROADCAST NETMASK 167772170 10.0.0.10 255.255.255.255 255.255.255.0 16777343 127.0.0.1 255.255.255.255 255.0.0.0 2 interfaces found.
Code:# IP BCAST NETMASK 2102336203 203.22.1.122 255.255.255.255 255.255.255.0 33554442 10.0.0.2 255.255.255.255 255.255.255.0 16777343 127.0.0.1 255.255.255.255 255.0.0.0 3 interfaces found.
I wonder how Visual Basic does it - VB sockets seem to (according to netstat) bind to all adapters, so im assuming to do that it has to load multiple sockets?
[This message has been edited by Wayne Diamond (edited January 17, 2001).]
Leave a comment:
-
Interesting...
You have to open two ports on your machine, one for each IP address.
I'm assuming one is dialed up and the other is lan but not I-net connected?
I'm not sure how VB does it but I'm pretty sure you can only bind to one adapter at a time unless you open a port on each....
Scott
------------------
Scott
mailto:[email protected][email protected]</A>
Leave a comment:
-
bound socket can only be connected to from the Internet not the LAN due to adapter??
I'm trying to listen on a port, and be able to connect to that port from both a LAN-based workstation and an Internet-based workstation. At the moment I can only have one or the other...
Im binding a socket using this statement:
Code:TCP OPEN Server ADDR GetAdapter PORT 113 AS hServer TIMEOUT 5
Code:FUNCTION GetAdapter() AS LONG LOCAL sd AS DWORD LOCAL nBytesReturned AS DWORD LOCAL i AS LONG LOCAL lerr AS LONG LOCAL lReturn AS LONG LOCAL nNumInterfaces AS INTEGER LOCAL sDisplay AS STRING LOCAL sBuff AS STRING * 760 '' allow max 10 interfaces LOCAL pszHost AS ASCIIZ PTR sd = WSASocket(%AF_INET, %SOCK_DGRAM, 0, BYVAL 0, 0, 0) IF sd = %SOCKET_ERROR THEN EXIT FUNCTION lReturn = WSAIoctl(BYVAL sd, %SIO_GET_INTERFACE_LIST, 0, 0, VARPTR( sBuff ), _ LEN(sBuff), nBytesReturned, BYVAL 0, BYVAL 0 ) lerr = WSAGetLastError() IF lreturn = %SOCKET_ERROR THEN 'STDOUT "lReturn " + $TAB + STR$( lreturn ) + $CRLF + "lerr " + $TAB + STR$( lerr ) EXIT FUNCTION END IF closesocket sd WSACleanup DIM zz AS LONG FUNCTION = CVL(MID$(sBuff, %ADAPTER * %INTERFACE_RECLEN + 9, %IP_Len)) END FUNCTION
When it binds to an adapter (eg. the same adapter that my modem/internet uses), only Internet-based sockets can connect to it... I can't telnet to the port from a different workstation in my LAN
If I change it to bind to adapter 1 instead of 0, it's the opposite - I can connect from my LAN, but not from the Internet...
I noticed that when I load a socket in Visual Basic, it seems to bind to _all_ adapters... so what do I have to do to create a socket that can be connected to from both the Internet _and_ my LAN?
Any help is much appreciated!
Thanks,
Wayne
------------------
Tags: None
Leave a comment: