1,183
社区成员
发帖
与我相关
我的任务
分享
unit Unit_SocketDll;
interface
uses Dialogs,SysUtils,classes,Windows,Forms,stdctrls, scktcomp;
function ClientServerSocketDll(StrHostName:PChar; i_PortNo:integer; StrMsg:String; Var ResultStr:PChar):Boolean;export;
implementation
function ClientServerSocketDll(StrHostName:PChar; i_PortNo:integer; StrMsg:String; Var ResultStr:PChar):Boolean;
var ClientSocket1:TClientSocket;
Stream : TWinSocketStream;
Buffer : array[0 .. 1000] of Char;
Str:string;
begin
try
ClientSocket1:=TClientSocket.Create(nil);
ClientSocket1.Address:=StrHostName;
ClientSocket1.Port:=i_PortNo;
ClientSocket1.ClientType:=ctBlocking;
ClientSocket1.Socket.Open(StrHostName,StrHostName,'',i_PortNo,true);
Stream:=TWinSocketStream.Create(TCustomWinSocket(ClientSocket1.Socket),6000);
if (ClientSocket1.Socket.Connected<>true) then
begin
Result:=False;
Exit;
end;
ClientSocket1.Socket.SendText(Trim(StrMsg)+#10#13);
if (Stream.WaitForData(120000)<>true) then
begin
Result:=False;
MessageBox(Application.handle,'发送数据包到服务器发生超时错误!','超时错误',MB_OK+MB_ICONERROR);
Exit;
end;
if (Stream.Read(buffer,1000)=0) then
begin
Result:=False;
MessageBox(Application.handle,'Socket通迅包发生从服务器获取数据的错误!','无法获取数据',MB_OK+MB_ICONERROR);
Exit;
end;
Str:=copy(Buffer,1,length(buffer));
Result:=True;
ResultStr:=PChar(Str);
Except
ClientSocket1.Socket.Close;
Stream.Free;
MessageBox(Application.handle,'Socket通迅发生了异常,请检查网络连接是否正常!','Socket异常',MB_OK+MB_ICONERROR);
Result:=False;
end;
end;
以上引自hmyhuo1983