NMMSG.pas
上传用户:szzdds
上传日期:2013-09-18
资源大小:293k
文件大小:3k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit NMMSG;
  2. {$X+}
  3. {$R-}
  4. {$IFDEF VER100}
  5. {$DEFINE NMF3}
  6. {$ENDIF}
  7. {$IFDEF VER110}
  8. {$DEFINE NMF3}
  9. {$ENDIF}
  10. {$IFDEF VER120}
  11. {$DEFINE NMF3}
  12. {$ENDIF}
  13. {$IFDEF VER125}
  14. {$DEFINE NMF3}
  15. {$ENDIF}
  16. interface
  17. uses
  18.   Classes, SysUtils, Forms, Psock, NMConst, Winsock;
  19. {$IFDEF VER110}
  20. {$OBJEXPORTALL On}
  21. {$ENDIF}
  22. {$IFDEF VER120}
  23. {$OBJEXPORTALL On}
  24. {$ENDIF}
  25. {$IFDEF VER125}
  26. {$OBJEXPORTALL On}
  27. {$ENDIF}
  28. //  CompName='NMMSG32';
  29. //  Major_Version='4';
  30. //  Minor_Version='02';
  31. //  Date_Version='012798';
  32. type
  33.   TMSGEvent = procedure(Sender: TComponent; const sFrom, sMsg: string) of object;
  34.   TNMMsg = class(TPowerSock)
  35.   private
  36.     sFromName: string;
  37.     FOnMessageSent: TNotifyEvent;
  38.   protected
  39.   public
  40.     constructor Create(AOwner: TComponent); override;
  41.     procedure Abort; override;
  42.     function PostIt(const sMsg: string): string;
  43.   published
  44.     property FromName: string read sFromName write sFromName;
  45.     property OnMessageSent: TNotifyEvent read FOnMessageSent write FOnMessageSent;
  46.   end; {_ TNMMsg = class(TPowerSock) _}
  47.   TNMMSGServ = class(TNMGeneralServer)
  48.   private
  49.     FOnMSG: TMSGEvent;
  50.   protected
  51.   public
  52.     constructor Create(AOwner: TComponent); override;
  53.     procedure Serve; override;
  54.   published
  55.     property OnMSG: TMSGEvent read FOnMSG write FOnMSG;
  56.   end; {_ TNMMSGServ = class(TNMGeneralServer) _}
  57.  
  58. implementation
  59. constructor TNMMsg.Create;
  60. begin
  61.   inherited Create(AOwner);
  62.   Port := 6711;
  63. end; {_ constructor TNMMsg.Create; _}
  64. function TNMMsg.PostIt;
  65. var i: integer;
  66. begin
  67.   Connect;
  68.   try
  69.     Write(Format('%.4d', [Length(FromName)]) + FromName);
  70.     Write(Format('%.4d', [Length(sMsg)]) + sMsg);
  71.     if Assigned(FOnMessageSent) then FOnMessageSent(self);
  72.     Result := Read(16);
  73.   finally
  74.     DisConnect;
  75.   end; {_ try _}
  76. end; {_ function TNMMsg.PostIt; _}
  77. procedure TNMMsg.Abort;
  78. begin
  79.   if Connected then
  80.   begin
  81.     Cancel;
  82.     DisConnect;
  83.   end; {_ if connected then _}
  84. end; {_ procedure TNMMsg.Abort; _}
  85. {TNMMSGServ}
  86. constructor TNMMSGServ.Create;
  87. begin
  88.   inherited Create(AOwner);
  89.   Port := 6711;
  90. end; {_ constructor TNMMSGServ.Create; _}
  91. procedure TNMMSGServ.Serve;
  92. var sFrom, sMsg: string;
  93.   i: integer;
  94. begin
  95.   try
  96.     i := StrToInt(Read(4));
  97.     if i > 0 then
  98.       sFrom := Read(i);
  99.     i := StrToInt(Read(4));
  100.     if i > 0 then
  101.       sMsg := Read(i)
  102.     else {_ NOT if i > 0 then _}  sMsg := '';
  103.     Write('OK' + '              ');
  104.     if Assigned(TNMMSGServ(Chief).FOnMSG) then (TNMMSGServ(Chief).FOnMSG(self, sFrom, sMsg));
  105.     while Connected and (not beencanceled) do
  106.       Wait;
  107.   except
  108.   end;
  109. end; {_ procedure TNMMSGServ.Serve; _}
  110. end.