📄 server.pas
字号:
unit Server;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPServer, ExtCtrls, jpeg,
Menus, StdCtrls, IdStack, IdSocketHandle, Buttons;
type
TServerForm = class(TForm)
TCPServer: TIdTCPServer;
Image: TImage;
Panel: TPanel;
MainMenu: TMainMenu;
FileMenu: TMenuItem;
FileExit: TMenuItem;
lblIP: TLabel;
HelpMenu: TMenuItem;
FileAbout: TMenuItem;
spbActiveServer: TSpeedButton;
lblPort: TLabel;
lblShowIP: TLabel;
lblShowPort: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure TCPServerExecute(AThread: TIdPeerThread);
procedure FileExitClick(Sender: TObject);
procedure FileAboutClick(Sender: TObject);
procedure spbActiveServerClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ServerForm: TServerForm;
implementation
uses
About;
{$R *.dfm}
procedure TServerForm.FormCreate(Sender: TObject);
var
Binding: TIdSocketHandle;
IPList: TStrings;
begin
IPList := GStack.LocalAddresses.Create;
TCPServer.Bindings.Clear;
if IPList.Count > 0 then
begin
Binding := TCPServer.Bindings.Add;
Binding.IP := IPList.Strings[IPList.Count - 1];
Binding.Port := 8085;
lblShowIP.Caption := Binding.IP;
lblShowPort.Caption := IntToStr(Binding.Port);
end;
//IPList := nil;
end;
procedure TServerForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if TCPServer.Active then
TCPServer.Active := False;
end;
procedure TServerForm.TCPServerExecute(AThread: TIdPeerThread);
var
memStream: TMemoryStream;
jpg: TJpegImage;
BufferLen: Integer;
begin
if AThread.Connection.Connected and not AThread.Terminated then
begin
memStream := TMemoryStream.Create;
BufferLen := AThread.Connection.ReadInteger;
memStream.Size := BufferLen;
AThread.Connection.ReadBuffer(memStream.Memory^, BufferLen);
jpg := TJpegImage.Create;
jpg.LoadFromStream(memStream);
Image.Picture.Bitmap.Assign(jpg);
jpg.Free;
memStream.Free;
end;
end;
procedure TServerForm.FileExitClick(Sender: TObject);
begin
Close;
end;
procedure TServerForm.FileAboutClick(Sender: TObject);
begin
AboutForm.Show;
end;
procedure TServerForm.spbActiveServerClick(Sender: TObject);
begin
if TCPServer.Active then
begin
spbActiveServer.Caption := '启动';
TCPServer.Active := False;
end else
begin
spbActiveServer.Caption := '停止';
TCPServer.Active := True;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -