Delphi(Pascal) codeunit Unt_socketserver;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, xmldom, XMLIntf, cxLookAndFeelPainters, StdCtrls, cxButtons,
Buttons, cxControls, cxContainer, cxEdit, cxTextEdit, Sockets, msxmldom,
XMLDoc, ScktComp;
type
TFrm_socketserver = class(TForm)
XMLDocument1: TXMLDocument;
Label1: TLabel;
SpeedButton1: TSpeedButton;
cxButton1: TcxButton;
cxButton2: TcxButton;
OpenDialog1: TOpenDialog;
cxTextEdit1: TcxTextEdit;
ServerSocket: TServerSocket;
procedure ServerSocketGetThread(Sender: TObject;
ClientSocket: TServerClientWinSocket;
var SocketThread: TServerClientThread);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TClientThread = Class(TServerClientThread)
private
public
procedure ClientExecute; override;
end;
var
Frm_socketserver: TFrm_socketserver;
implementation
var host,port,sid,username,password:string;
{$R *.dfm}
procedure TClientThread.ClientExecute;
var
ProvideBuffer: Array[0..120] Of Char;
SocketStream : TWinSocketStream;
Byteswrite : Integer;
s:string;
begin
while not Terminated and ClientSocket.Connected do
Begin
try
SocketStream:= TWinSocketStream.Create(ClientSocket, 100);
try
s:=trim(host+port+sid+username+password);
strpcopy(ProvideBuffer,s);
Byteswrite:=SizeOf(ProvideBuffer);
SocketStream.Write(ProvideBuffer,Byteswrite);
finally
SocketStream.Free;
ClientSocket.Close;
end;
except
end;
end;
end;
procedure TFrm_socketserver.ServerSocketGetThread(Sender: TObject;
ClientSocket: TServerClientWinSocket;
var SocketThread: TServerClientThread);
begin
SocketThread := TClientThread.Create(False, ClientSocket);
end;
end.
该博客展示了使用Delphi(Pascal)实现主动断开socket链接的代码。代码中定义了服务器和客户端线程类,在客户端线程执行时,通过创建套接字流写入数据,最后关闭客户端套接字,实现主动断开链接。
856

被折叠的 条评论
为什么被折叠?



