unit Unit_SocketDll;interfaceuses Dialogs,SysUtils,classes,Windows,Forms,stdctrls, scktcomp;function ClientServerSocketDll(StrHostName:PChar; i_PortNo:integer; StrMsg:String; Var ResultStr:PChar):Boolean;export; implementationfunction 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
implementationfunction 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