unit main;interfaceuses
  ScktComp, // 必须要使用ScktComp,不然不能声明TWinSocketStream对象
  WinSock,Dialogs,SysUtils,Forms;
  //Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  //Dialogs, StdCtrls;
const
  SocketHost = '127.0.0.1'; //服务器端地址
  SocketPort = 600;       //服务器端端口        procedure ClientSocket1Read( Sender: TObject; Socket: TCustomWinSocket );var
  clientSocket: TClientSocket;
  form1:tform;
  clientSocket1: TCustomWinsocket;  function  AllocTimeStampReq(IMPU: PChar;HashValue: PChar):pchar;stdcall;
implementation  function  AllocTimeStampReq(IMPU: PChar;HashValue: PChar) :pchar;stdcall;
  var
    wSAData:   TWSAData;
    i: Integer;
    sendBuffer,recvBufer : array of byte;
  begin
      if   WSAStartup($0101,   wSAData)   <>   0   then
      begin
          raise Exception.Create('AllocTimeStampReq.DLL cannot startup winSock DLL. please hava a try latter... ...');
          WSACleanup;
      end;     clientSocket := TClientSocket.Create(nil);
     clientSocket.OnRead := ClientSocket1Read;    //编译出错 incompatible type:'method pointer and regular procedure'
     clientSocket.Host := SocketHost;
     clientSocket.Port := SocketPort;
     clientSocket.ClientType:=ctNonBlocking;
     clientSocket.Active := true;      //clientSocket.Open;      setLength(sendBuffer,20);      for i := 0 to  20 do
      begin
        sendBuffer[i]:=i;
      end;      setLength(recvBufer,20);
      clientSocket.socket.SendBuf(sendBuffer,20);      showmessage(inttostr(clientSocket.Socket.ReceiveLength));
      if clientSocket.Socket.ReceiveLength <> 0 then
      begin
        //clientSocket.Socket.re
        clientSocket.socket.ReceiveBuf(recvBufer,20);
        // result := pchar( strcat( pchar(recvBufer[10]) , pchar(recvBufer[12]) ));
      end;
        //result:=pchar(clientSocket.socket.ReceiveText);
  end;        procedure ClientSocket1Read( Sender: TObject; Socket: TCustomWinSocket );
begin
    try    except    end;
end;