home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
- IPX & SPX Custom Controls
- For
- Visual BasicTM 3.0
- &
- WindowsTM 3.1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Introduction
-
- IPX (Internetwork Packet Exchange) protocol is a datagram (connectionless) service used
- as the underlying protocol in Novell NetWare. IPX establishes no connections nor
- guarantee of delivery. Each packet a workstation sends is treated separately. SPX
- (Sequenced Packet Exchange) is a connection-oriented protocol providing guaranteed
- packet delivery, flow control, and sequencing. SPX has many of the characteristics of the
- transport level of OSI. IPX/SPX are adaptations of protocols developed by Xerox(r), the
- Xerox Network System, XNS(tm).
-
- NetWare addressing is similar to the postal service's addressing system that identifies
- recipients by country, state, city, street, number, apartment, and individual names.
- NetWare addresses consist of three components: network number, node address, and
- socket. Network numbers identify each segment of an internetwork. Network numbers
- are assigned when NetWare file servers and bridges are installed. IPX derives the node
- address from the address of each network adapter card. Socket numbers provide routing
- within a node, since several processes can be running simultaneously. Processes can open
- and close sockets to receive and send packets.
-
- The IPX and SPX custom controls allow you to communicate with remote machines
- connected by a local area network. To use the control, you must have the workstations
- set up as NetWare clients. This involves loading IPX.COM or IPXODI.COM before
- Windows loads. The examples provided also require installing NETX or VLMs because
- they use several NetWare services to find other users.
-
- The IPX and SPX custom controls are event driven and relieve the application from
- polling the status of network communication channels. When new data is received from a
- remote machine, the IPX or SPX custom control fires a Visual Basic subroutine allowing
- the application to service the received information.
-
- Several examples are provided showing how to use the controls. Further information
- about IPX and SPX can be found in the following references: Client SDK Documentation
- and C Programmer's Guide by Novell, C Programmer's Guide To NetBIOS, IPX And
- SPX by W. David Schwaderer, Programmer's Guide to NetWare by Charles Rose, and
- Network Programming in C, by Barry Nance.
-
- Control Properties
-
- (These properties apply to both controols, unless indicated otherwise)
-
- Socket
- [form.]Control.Socket[ = numericexpression]
-
- Sets the socket that the control listens to and sends packets out through.
-
- Example: spx1.Socket = &H5454
-
- ReceiveECBS
- [form.]Control.ReceiveECBS[ = numericexpression]
-
- Settings
- Default = 5
-
- Sets the number of ECBs that are used to receive packets. Currently, this property should
- only be set in the design environment and not at run time.
-
- SendECBS
- [form.]Control.SendECBS[ = numericexpression]
-
- Settings
- Default = 1
-
- Sets the number of ECBs that are used to send packets. Currently, this property should
- only be set in the design environment and not at run time. In addition, this property
- should currently be set to 1.
-
- Channels
- [form]Control.Channels[ = numericexpression]
- (not applicable for IPX)
-
- Settings
- Default = 1
-
- Sets the maximum number of connections that the control will need to service. This
- property can be set once after the control is loaded and cannot change until the control is
- reloaded. Currently, this property has no effect.
-
- Example: spx1.Channels = 1
-
- Connection
- [form]Control.Connection
- (not applicable for IPX)
-
- Returns the SPX connection ID assigned to this connection by SPX. This ID may be used
- to make SPX calls in NWIPXSPX.DLL.
-
- Example: id% = spx1.Connection
-
- Send
- [form.]Control.Send[ = stringexpression]
-
- Sends stringexpression to a remote node specified by RemoteName.
-
- Example: spx1.Send="HELLO WORLD"
-
- Received
- [form.]Control.Received
-
- Return Data Type String
-
- Retrieves data retrieved from the network. When data is received, the control will call the
- Visual Basic subroutine spx1_ReceiveData
-
- Example:
- Sub spx1_ReceiveData ()
- Data$ = spx1.Received
- End Sub
-
- ReceivedFrom
- [form.]Control.ReceivedFrom
-
- Return Data Type String * 12
-
- Returns the internet address (network, node, and socket) of the node that sent the most
- recently received packet.
-
- Example:
- Sub spx1_ReceiveData()
- From$ = spx1.ReceivedFrom
- Data$ = spx1.Received
- End Sub
-
- Event
- [form.]Control.Event
-
- Return Data Type Integer
-
- Retrieves an event about the connection. An event is any activity (received data, errors,
- new connection with a remote, lost connection with a remote, etc.) related to the
- connection. When an event occurs, the control will fire the subroutine spx1_LinkEvent.
-
- Example:
- Sub spx1_LinkEvent ()
- Event% = spx1.Event
- End Sub
-
- Status
- [form.]Control.Status [ = { 0}]
- (not applicable for IPX)
-
- Status Initialization:
- 0 Disable
-
- Status Information:
- 1 Control is listening for a connection
- 2 Control is trying to establish a connection
- 3 Control has established a connection, ready to send
- 4 Control is terminating the connection
-
- Controls a connection and will contain status information. Setting the Status property to
- 0 will terminate any connection.
-
- Example: spx1.Status = 0 'Terminate any connection
-
- LinkType
- [form.]Control.LinkType [ = numericexpression]
- (not applicable for IPX)
-
- Settings
- Default 1
- 1 establish a session with remote
- 2 listen for connection
-
- Set the control's mode of operation. This may be changed at any time.
- Example: spx1.LinkType = 2
-
- LocalName
- [form.]Control.LocalName
-
- Return Data Type String * 12
-
- Returns the internet address of the current workstation (network, node, and socket).
-
- Example: myAddress = spx1.LocalName
-
- RemoteName
- [form.]Control.RemoteName[ = string expression]
-
- Set the internet address that the control will use to send and receive data. This may be
- changed at any time.
-
- Example: spx1.RemoteName = yourAddress
-
-
-
-
- Control Events
-
- LinkEvent()
-
- This event is called each time an event for a connection occurs. An event might be an
- IPX/SPX error or an event listed in the event table. The application should check the
- value of the Event property during this event.
-
- Example:
- Sub spx1_LinkEvent()
- Event% = spx1.Event()
- End Sub
-
- ReceiveData()
-
- This event is called each time data is received. The application should retrieve the value of
- Received during this event.
-
- Example:
- Sub spx1_ReceiveData()
- Data$ = spx1.Received()
- End Sub
-
- SentData()
-
- This event is called each time the control has transmitted data.
-
- Example:
- Sub spx1_SentData()
- ' Ready to send next packet
- End Sub
-
-
-
-
- Example Applications
-
- NETCHAT.MAK
-
- This example application uses the IPX control to send IPX packets to another workstation
- and allow the users to chat to one another. The application uses a simple protocol and
- finite state machine to connect to another application, send and receive data, and then
- disconnect from the other application. This application also uses several calls provided by
- NWCALLS.DLL to find all the other users and their internet addresses.
-
- CLIENT.MAK & SERVER.MAK
-
- These two examples demonstrate the SPX control in a simple client/server protocol. The
- client application sends a directory command to the server, which returns a directory
- listing of the server's current directory. To set an application, all that is needed is to set
- the LinkType property to 2. To be a client, set the LinkType property to 1.
-
- Event Values
-
- Any of the following events will trigger a spx1_LinkEvent call. The value returned by
- Event is listed in the left column and its meaning is listed on the right.
-
- 237 Abnormal Connection Termination
-
- 238 Invalid Connection
-
- 239 Connection Table Full
-
- 241 IPX/SPX Not Installed
-
- 242 No DOS Memory
-
- 243 No Free ECB
-
- 244 Lock Failed
-
- 245 Over the Maximum Limit
-
- 246 IPX/SPX Previously Initialized
-
- 252 Socket Not Opened
- SPX Command Canceled with IPXCancelEvent
-
- 253 Malformed Packet
- SPX Packet Overflow
-
- 255 SPX Socket Not Opened
-
-
- Visual Basic Errors
-
- The following is a list of special errors than can be returned by the IPX/SPX custom
- controls. The value in the left column is the error code returned in the Visual Basic "Err"
- variable and its meaning is on the right.
-
- 22001 IPX not installed
- 22002 SPX not installed
- 22003 Currently only 1 user allowed
- 22004 Socket not opened
-
-
- Visual Basic is a trademark of Microsoft Corporation.
- Windows is a registered trademark of Microsoft Corporation.
- IPX/SPX, NetWare are registered trademarks of Novell, Inc.
- Xerox Network System is a registered trademark of Xerox.
- IPXSPX.DOC
-
-
-