书中三层例子,在WINDOWS98下正常,而在WINDOWS2000下出现SOCKET连接时死机,unit SocketUnit2;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
  Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
  DBClient, socketProject1_TLB, StdVcl, Provider, DB, DBTables;type
  TMyDataServer = class(TRemoteDataModule, IMyDataServer)
    Query1: TQuery;
    DataSetProvider1: TDataSetProvider;
    Database1: TDatabase;
    procedure RemoteDataModuleCreate(Sender: TObject);
    procedure RemoteDataModuleDestroy(Sender: TObject);
    procedure Query1AfterOpen(DataSet: TDataSet);
  private
    { Private declarations }
  protected
    class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
  public
    { Public declarations }
  end;implementation
 uses SocketUnit1;
{$R *.DFM}class procedure TMyDataServer.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);
begin
  if Register then
  begin
    inherited UpdateRegistry(Register, ClassID, ProgID);
    EnableSocketTransport(ClassID);
    EnableWebTransport(ClassID);
  end else
  begin
    DisableSocketTransport(ClassID);
    DisableWebTransport(ClassID);
    inherited UpdateRegistry(Register, ClassID, ProgID);
  end;
end;procedure TMyDataServer.RemoteDataModuleCreate(Sender: TObject);
begin
SvrMainForm.Updatenc(1);
end;procedure TMyDataServer.RemoteDataModuleDestroy(Sender: TObject);
begin
SvrMainForm.Updatenc(-1);
end;procedure TMyDataServer.Query1AfterOpen(DataSet: TDataSet);
begin
SvrMainForm.Updatenq;
end;initialization
  TComponentFactory.Create(ComServer, TMyDataServer,
    Class_MyDataServer, ciMultiInstance, tmApartment);
end.
发现只要不用uses SocketUnit1;不调用SocketUnit1中的过程,在WIN2000
下就可运行,只要调用就死机,而在WIN98下一切正常,不知何故?