2025-11-28 00:35:46 +09:00
..
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00
new
2025-11-28 00:35:46 +09:00

ReadMe.txt

THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.

Copyright (C) 1998  Microsoft Corporation.  All Rights Reserved.

Author: Frank K. Li - Microsoft Developer Support

Files:
======
The RnrCs application uses the following files

 File           Description
 ------------------------------------------------------
 ReadMe.txt     Readme file for the RnrCs application
 RnrCs.cpp      source code file
 Makefile       Nmake file


Winsock 2 RnR API Used:
=======================
 WSAInstallServiceClass
 WSASetService
 WSAEnumNameSpaceProviders
 WSALookupServiceBegin
 WSALookupServiceNext
 WSALookupServiceEnd


Abstract:
=========
      In a traditional Winsock 1.1 client/server program, the server 
      binds itself to a well known port of a particular protocol family. 
      Then, any client can talk to the server only if it knows the server's 
      addressing infomation which includes the server's address, protocol, 
      and socket type.

      The Winsock 2 Name Resolution and Registration (RnR) provides a unified
      API set for client to search for registered services without having any
      prior knowledge of addressing information. Basically, a server wants to 
      register its existence within one or more name spaces through a friendly
      service instance name and associate itself to a service class GUID.
      Client application will be able to find the addressing 
      information of a server by the friendly name and class GUID
      in a name space.
      
      In this sample, the server program converts the user supplied Type Id 
      into a service class GUID by SVCID_NETWARE() macro. (You can also 
      generate your own service class GUID using uuidgen.exe or guidgen.exe 
      and distribute this GUID to your client program.) It then checks the 
      availability of various kind of name space providers and install this 
      service class by filling out the relevant service class information 
      with NS_NTDS (NT Directory Service name space provider available in Windows 2000)
      and/or NS_SAP (Service Advertising Protocol name space provider available 
      both in Windows NT 4 and Windows 2000) name spaces whenever they are available.
      If NS_NTDS has been installed, it binds itself to UDP protocol addresses
      and a port number dynamically chosen by the system. If NS_SAP has been
      installed, it also binds itself to a IPX protocol address and a socket
      number chosen by the system. After filling out its bound socket addresses,
      it advertises its availability through a service name supplied by a user.
      For each bound non-blocking socket addresses, the server tries to
      receive any datagram sent by any client and print out the client's socket
      addressing information if a datagram is received.
      When a user hits CTRL-C, the server program will unregister this 
      service instance, remove the service class and close all sockets.

      The client program converts the user supplied Type Id into a service
      class GUID by SVCID_NETWARE() macro, such that it can find any SAP
      predefined services (e.g. file server Type Id is 4) or the corresponding 
      advertised server program. If the user supplies a service name, it 
      will just look up the service with the same service name and Type Id. 
      If the user supplies a wild card "*" for the service name, it will try 
      to look up all registered services with the same
      Type Id. For each service program found, it prints out the socket addressing
      information of the service program and sends a message to it.  

      NOTE: 
      (1) To exploit the NS_NTDS name space (Active Directory):
          (a) client and server machines should have Windows 2000 or later installed and both 
              machines should be members of a Windows 2000 domain.
          (b) If the server program is running in the security context of Domain Admins, 
              you should have no problem in publishing the service. 
          (c) If the server program is running in the context of a Domain Users, Domain
              Admins have to modify the access control list (ACL) on the WinsockServices 
              container:
              From the Active Directory Users and Computers MMC snap-in, access the View menu 
              and select Advanced Features. Under the System container is another container 
              listed as WinsockServices. Open the WinsockServices container, 
              right-click Properties->Security, add your desired user/group with Full Control
              permission. Make sure this applies onto "this object and all child objects"
              by clicking the "Advanced..." button and "View/Edit..." your selected permission
              entry. 
      (2) To advertise in the SAP name space, server program machine should have
          NWLink IPX/SPX Compatible Transport protocol and SAP Agent service installed.
      (3) To lookup servers in the SAP name space, client program machine should have
          NWLink IPX/SPX Compatible Transport protocol installed.
      (4) When the server is running on a mutihomed machine, the SAP name space
          provider will only make the first registered ipx address available, other
          ipx addresses are ignored.



Supported Platforms:
====================
 Windows 2000 Beta 2 or later, Windows NT 4.0 SP3 or later.
 
 On NT4, only the SAP name space is available. IPX/SPX compatible transport protocol 
 is required. SAP Agent service is required on the server side machine.
 
 On Windows 2000, please refer to NOTE (1) above for details in configuration of 
 NS_NTDS name space.

 
    

Building this sample:
=====================
 Run nmake to use the supplied makefile or create a VC project for 
 RnrCs. When creating a project in VC, remember to link with the 
 Winsock 2 library ws2_32.lib.  Also, use the 
 headers and libs from the April 98 Platform SDK or later.



Usage:
======
 RnrCs
 -c (running this program as a client)
 -s (running this program as a server, default is running as a server)
 -t server_type_id (default is: 200)
 -n server_instance_name (default is: MyServer)
 -p provider_name (default is: NS_ALL)
                  (e.g. NS_NTDS, NS_SAP, NS_ALL)
  Examples:
   RnrCs -s -n MyServer ....Run as server /w server_type of 48, service
                            instance name of MyServer
   RnrCs -c -n * ..............Run as client and find all servers /w server_type_id
                               of 200 from all available name spaces
   RnrCs -c -n * -p NS_SAP ....Run as client and find all servers /w server_type_id 
                               of 200 from the SAP name space
   RnrCs -c -t 4 -n * .........Run as client and find all SAP file servers
   Hit Ctrl-C to quit the server program


Examples:
=========
-running RnrCs as a server on a Windows 2000 machine in domainA with server
 instance name of "NT5HostBhelloSrv" and type id of "200"
C:\>rnrcs -s -n NT5HostBhelloSrv
Installing ServiceClassName: NT5HostBhelloSrv Type 200
NTDS name space class installation
SAP name space class installation
HostName: DEMO5DC
IP addresses bound...
                      187.91.239.60:3352
IPX address bound...
              9D36B800.00C04FB9D78C:4170
Advertise server of instance name: NT5HostBhelloSrv ...
Wait for client talking to me, hit Ctrl-C to terminate...
received: [A message from the client: NT5HostnameC : 9D36B800.00AA00A21FF1:4636]
received: [A message from the client: NT5HostnameC : 187.91.186.182:2363]

-running RnrCs as a server on a NT4 machine with server instance name of 
 "NT4HostAhelloSrv" and type id of "200"
C:\>rnrcs -s -n NT4HostAhelloSrv
Installing ServiceClassName: NT4HostAhelloSrv Type 200
SAP name space class installation
IPX address bound...
              9D36B800.00A0C9A55DC9:5DB0
Advertise server of instance name: NT4HostAhelloSrv ...
Wait for client talking to me, hit Ctrl-C to terminate...
received: [A message from the client: NT5HostnameC : 9D36B800.00AA00A21FF1:4638]

-running RnrCs as a client on a Windows 2000 machine in domainA to find servers of type id "200"
C:\>rnrcs -c -n *
Performing Query for service (type, name) = (200, *) . . .

Name[0]:               NT5HostBhelloSrv              9D36B800.00C04FB9D78C:4170
send a message to the peer...
Name[1]:               NT5HostBhelloSrv                      187.91.239.60:3352
send a message to the peer...
Name[0]:               NT4HOSTAHELLOSRV              9D36B800.00A0C9A55DC9:5DB0
send a message to the peer...
No more matches.

-running RnrCs as a client to query SAP file servers in the network
C:\>rnrcs -c -n * -t 4  -p NS_SAP
Performing Query for service (type, name) = (4, *) . . .

Name[0]:                          ITSNW              003F9578.000000000001:0451
Name[0]:                          LCMAX              0A65AFFF.000000000001:0451
Name[0]:                       NC_NW410              3401AA5C.000000000001:0451
Name[0]:                        TSUNAMI              310FC01C.000000000001:0451
Name[0]:                      HKATZ3_NW              34F1D09E.000000000001:0451
Name[0]:               GRANDMASTER_FPNW              9D396800.00C04FB67306:0451
No more matches.