Asynchronous socket error 10060这是聊天室的程序
服务端
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, ScktComp, StdCtrls;type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    ListBox1: TListBox;
    ListBox2: TListBox;
    ListBox3: TListBox;
    ServerSocket1: TServerSocket;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure ServerSocket1ClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ListBox2DblClick(Sender: TObject);
    procedure RefreshClients;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  connect_count:integer=0;implementation{$R *.dfm}procedure TForm1.Timer1Timer(Sender: TObject);
begin
RefreshClients;
end;procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
listbox3.Items.Add('connect:'+socket.RemoteHost+'('+socket.RemoteAddress+')');
inc(connect_count);
RefreshClients;
end;procedure TForm1.RefreshClients;
var
l,j:integer;
begin
Listbox1.clear;
if  connect_count<>0 then
for l:=0 to connect_count-1 do
with  ServerSocket1.socket.connections[l] do
begin
sendtext('^get refresh');
sleep(50);
listbox1.Items.add(RemoteAddress+'('+RemoteHost+')');
for j:=0 to  connect_count-1 do
begin
sendtext('$'+inttostr(j)+':'+serversocket1.socket.connections[j].RemoteAddress+'('+serversocket1.socket.connections[j].RemoteHost+')');
sleep(50);
end;
end;
end;
procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
listbox3.Items.Add('disconnected:'+socket.RemoteHost+'('+socket.RemoteAddress+')');
dec( connect_count);
 RefreshClients;
end;procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
  var
  l:integer;
  rc_text:string;
  rc_name:string;
begin
 rc_text:=socket.ReceiveText;
  rc_name:=socket.RemoteHost;
  listbox2.Items.Add(rc_name+':'+rc_text);
  for l:=0 to ServerSocket1.Socket.ActiveConnections-1 do
    ServerSocket1.Socket.Connections[l].SendText(rc_name+':'+ rc_text) ;
end;procedure TForm1.ListBox2DblClick(Sender: TObject);
begin
showmessage(listbox1.Items[listbox1.Itemindex]);
end;procedure TForm1.FormCreate(Sender: TObject);
beginend;end.
客户端
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp;type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    CheckBox1: TCheckBox;
    ClientSocket1: TClientSocket;
    Button1: TButton;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    ListBox1: TListBox;
    ListBox2: TListBox;
    Edit2: TEdit;
    procedure CheckBox1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure Edit2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ListBox1DblClick(Sender: TObject);
    procedure ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if not clientsocket1.Active then
  clientsocket1.Address:=edit1.Text;
  if not checkbox1.Checked then
  listbox2.Clear;
 clientsocket1.Active:=checkbox1.Checked;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
clientsocket1.Socket.SendText(edit2.Text);
edit2.Text:='';
end;procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
 var
  us_text:string;
begin
 us_text:=Socket.ReceiveText;
 if CompareStr('^Get refresh', us_text)=0 then
 listbox2.Clear
 else
 begin
  if pos('$', us_text)=1 then
 listbox2.Items.Add( us_text)
 else
 listbox1.Items.Add( us_text);
end;
end;procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key=13  then
begin
 clientsocket1.Socket.SendText(edit2.Text);
 edit2.Text:='';
end;
end;procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
showmessage(listbox1.Items[listbox1.Itemindex]);
end;procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
beginend;end.