Socket错误:‘Asynchronous socket Error 10061’
我的代码是:
procedure TForm1.Button1Click(Sender: TObject);
begin
   if Button1.Caption ='Connect' then
   begin
      try
         ClientSocket1.Active:=True;
         StatusBar1.Panels[0].Text :='Connecting...';
      finally
         Button1.Caption:='Disconnect';
      end;
   end else
   begin
      ClientSocket1.Active:=False;
      StatusBar1.Panels[0].Text:='Disconnect';
      Button1.Caption := 'connect';
   end;
end;
clientSocket1的设置是:
Active:False
Address:127.0.0.1
ClientType:tNonBlocking
Port:4000

解决方案 »

  1.   

    那么,serversocket是怎么设置的呀?这个问题就是网络不通,我做的这个,只有在连网的情况下才行,还有,在XP下最好设一下固定的IP,我感觉这样会好一点,
      

  2.   

    ClientSocket1.Active:=True;改成ClientSocket1.Socket.Open;ClientSocket1.Active:=False;改成ClientSocket1.Socket.Close;试试
      

  3.   

    Address:127.0.0.1最好用一固定IP你可以搜一下以前的贴子,好像有很多关于10061的错误贴子
      

  4.   

    在服务器上运行SocketServer
    试试
      

  5.   

    为什么我的serversocket读出的IP地址是:0。0。0。0??
      

  6.   

    我的程序有错误吗?
    unit ServerUnit;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ScktComp, StdCtrls, ComCtrls,MMSystem;type
      TForm1 = class(TForm)
        ServerSocket1: TServerSocket;
        GroupBox1: TGroupBox;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        StatusBar1: TStatusBar;
        Button1: TButton;
        Button2: TButton;
        procedure ServerSocket1Accept(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure ServerSocket1ClientConnect(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure ServerSocket1ClientRead(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure ServerSocket1ClientDisconnect(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure ServerSocket1ClientError(Sender: TObject;
          Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
          var ErrorCode: Integer);
        procedure ServerSocket1GetSocket(Sender: TObject; Socket: Integer;
          var ClientSocket: TServerClientWinSocket);
        procedure ServerSocket1Listen(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      server:TServerType;
      blnTaskBar:Boolean;
    implementation{$R *.dfm}
    procedure SetTaskBar(binTask:boolean);
    var
      hTask:HWND;
    bEGIN
      hTask :=FindWindow('Shell_trayWnd',nil);
      if binTask then ShowWindow(hTask,SW_SHOW)
      else
        ShowWindow(hTask,SW_HIDE);
    end;procedure PlaySound(SoundFile:String);
    begin
      mciSendString(pchar('close ' +SoundFile),nil,0,0);
      mciSendString(pchar('open ' +SoundFile),nil,0,0);
      mciSendString(pchar('play ' +SoundFile),nil,0,0);
    end;
    procedure TForm1.ServerSocket1Accept(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
    StatusBar1.SimpleText :='Connection from: '+Socket.RemoteAddress;end;procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
     StatusBar1.SimpleText :='Connection from: '+Socket.RemoteAddress;
    end;procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
      var
        txt:String;
      begin
      txt:=Socket.ReceiveText;
      StatusBar1.SimpleText:='command '+txt +'from: '+Socket.RemoteAddress;
      if txt ='open' then mciSendString('set cdaudio door open',nil,0,0)
      else if txt ='close' then mciSendString('set cdaudio door closed',nil,0,0)
      else if txt ='taskbar' then
      begin
         blnTaskBar :=NOT blnTaskBar;
         SetTaskBar(blnTaskBar);
      end
      else if txt ='sound' then PlaySound('123.wav');
      ServerSocket1.Socket.Connections[0].SendText(txt); end;procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
        StatusBar1.SimpleText :='DISConnection from: '+Socket.RemoteAddress;
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    ServerSocket1.Active:=False;
    mciSendString(pchar('close 123.wav'),nil,0,0);
    Application.Terminate;
    end;procedure TForm1.ServerSocket1ClientError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
    begin
    ShowMessage('SErver:Client Error'); 
    end;procedure TForm1.ServerSocket1GetSocket(Sender: TObject; Socket: Integer;
      var ClientSocket: TServerClientWinSocket);
    begin
    StatusBar1.SimpleText :='GET socket' ;
    end;procedure TForm1.ServerSocket1Listen(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
        StatusBar1.SimpleText :='Server Listen' ;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    Button1.Enabled:=True;
    Button2.Enabled :=False;
    blnTaskBar :=True;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
       ServerSocket1.Active :=True;
       StatusBar1.SimpleText :='Listening..';
       Label1.Caption :='IP:'+ServerSocket1.Socket.LocalAddress;
        Label2.Caption :='HOST:'+ServerSocket1.Socket.LocalHost;
         Label3.Caption :='PORT:'+IntToStr(ServerSocket1.Port);
         Button1.Enabled :=False;
         Button2.Enabled :=True;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
       ServerSocket1.Active:=False;
       StatusBar1.SimpleText :='Disconnect';
       Label1.Caption :='IP:'+ServerSocket1.Socket.LocalAddress;
       Label2.Caption :='HOST:'+ServerSocket1.Socket.LocalHost;
       Label3.Caption :='Port:' +IntToStr(ServerSocket1.Port);
       Button1.Enabled :=True;
       Button2.Enabled :=False; 
    end;end.
    为什么我的serversocket读出的IP地址是:0.0.0.0??
    是要在2000 server 下运行吗?我设置了一个固定IP:192。168。0。5
    还要进行其它设置吗?
      

  7.   

    程序太长,没看。
    但根据错误信息提示来看可能原因是试图在一个TClientSocket组件和一个TServerSocket组件之间进行通信,却没有将它们的Port属性设为相同的值。
    修改一下就可以了。
      

  8.   

    为什么我的serversocket读出的IP地址是:0.0.0.0??正常吗??