unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, winsock2, svcguid, wininet;type
 TForm1 = class(TForm)
   Button1: TButton;
   Memo1: TMemo;
   procedure Button1Click(Sender: TObject);
   procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
   s:tsocket;
   procedure connectirda; public
   { Public declarations }
 end;var
 Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
   connectirda;
end;
procedure TForm1.Button1Click(Sender: TObject);
var recvbuffer,sendbuffer:array[0..79] of char;
begin
   s:=socket(af_irda,sock_stream,0);
  // s:=wsasocket(af_irda,sock_stream,0,null,0,wsa_flag_overlapped);
   if s=invalid_socket then
   begin
       self.Memo1.Lines.Add('套接字创建失败!');
       exit;
   end else
       memo1.Lines.Add('套接字创建成功!') ;
   //errorcode:=connect(s,server,sizeof(server));
   strpcopy(sendbuffer,pchar('ATD**61*+33146290800**25#'));
   send(s,sendbuffer,sizeof(sendbuffer),0);
   recv(s,recvbuffer,sizeof(recvbuffer),0) ;
   self.Memo1.Lines.Add(string(recvbuffer)) ;
   closesocket(s);//关闭套接字
end;
procedure TForm1.connectirda;
var
   wsa:twsadata;
   err:integer;
  // dewlist:tdevicelist;
begin
   err:=wsastartup($0202,wsa);  //加载winsock
   if err<>0 then
   begin
       memo1.Lines.Add('WinSock DLL没有找到');
       exit;
   end;
    memo1.Lines.Add('winsock'+inttostr(integer(hi(wsa.wVersion)))+'.'+inttostr(integer(lo(wsa.wVersion)))+'版本加载成功!');   //监测加载的版本是否高位为2,低位为2
   if (integer(hi(wsa.wVersion))<>2) or (integer(lo(wsa.wVersion))<>2) then
   begin
       memo1.Lines.Add('2.2版本的WinSock DLL没有找到!');
       exit;
   end;
end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  wsacleanup;
end;
end.
我对红外发at指令,但手机没有反应,不解,什么原因呢,希望帮忙,完了公布全部代码