我用一对TClientSocket与TServerSocket实现从a程序到b程序的传输,完全没问题。但用另一对TClientSocket与TServerSocket实现b到a的传输时onClientRead却不能获取任何信息,但onClientConnect却能捕捉到连接。请高手指教。

解决方案 »

  1.   

    阻塞方式下onClientRead是不起作用的.
      

  2.   

    我的servertype = stNonBlocking。我换过端口,但还是没变化,我觉得如果端口不能用onClientConnect应该不能捕捉到连接!
      

  3.   

    是不是tcpclient和tcpserver呢??
      

  4.   

    那两个组件好象要安装,以下是别人说的:Menu: Component/Install Packages/Add...,选择 Delphi Bin 文件夹下的 dclsockets70.bpl 文件,在 Internet 面板下就有了。我的问题还没解决,英雄们救命啊`~
      

  5.   

    我没有你那个问题,不过我传过来的信息,出现乱吗
    up
    up
      

  6.   

    你指的a 和 b 是TClientSocket与TServerSocket
    还是主机?不同的程序?
      

  7.   

    如果有两个以上的client联接到server上的时候,都能正常联接成功,但是在server发数据的时候却只能有一个收得到。
      

  8.   

    TO: seeder(seeder) (这是通信的线程号不对,所以只能和第一个通信.
      

  9.   

    本人用 Delphi5 试验如下,可以互相通信。
    a 程序代码:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ScktComp;type
      TForm1 = class(TForm)
        ServerSocket1: TServerSocket;
        ClientSocket1: TClientSocket;
        Button1: TButton;
        Memo1: TMemo;
        Button2: TButton;
        procedure FormCreate(Sender: TObject);
        procedure ServerSocket1ClientRead(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure ClientSocket1Connect(Sender: TObject;
          Socket: TCustomWinSocket);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
    begin
      ServerSocket1.Active := True;
    end;procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      Memo1.Lines.Add(Socket.ReceiveText);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      ClientSocket1.Active := True;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      ClientSocket1.Socket.SendText('From aaaa');
    end;procedure TForm1.ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      memo1.Lines.Add('connected');
    end;end.object Form1: TForm1
      Left = 192
      Top = 114
      Width = 313
      Height = 249
      Caption = 'b'
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      PixelsPerInch = 96
      TextHeight = 13
      object Button1: TButton
        Left = 32
        Top = 168
        Width = 75
        Height = 25
        Caption = 'Link'
        TabOrder = 0
        OnClick = Button1Click
      end
      object Memo1: TMemo
        Left = 24
        Top = 24
        Width = 249
        Height = 121
        Lines.Strings = (
          'Memo1')
        TabOrder = 1
      end
      object Button2: TButton
        Left = 192
        Top = 168
        Width = 75
        Height = 25
        Caption = 'Send'
        TabOrder = 2
        OnClick = Button2Click
      end
      object ServerSocket1: TServerSocket
        Active = False
        Port = 8888
        ServerType = stNonBlocking
        OnClientRead = ServerSocket1ClientRead
        Left = 104
        Top = 56
      end
      object ClientSocket1: TClientSocket
        Active = False
        ClientType = ctNonBlocking
        Host = 'ctixp'
        Port = 9999
        OnConnect = ClientSocket1Connect
        Left = 168
        Top = 56
      end
    endb 程序代码:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ScktComp;type
      TForm1 = class(TForm)
        ServerSocket1: TServerSocket;
        ClientSocket1: TClientSocket;
        Button1: TButton;
        Memo1: TMemo;
        Button2: TButton;
        procedure FormCreate(Sender: TObject);
        procedure ServerSocket1ClientRead(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure ClientSocket1Connect(Sender: TObject;
          Socket: TCustomWinSocket);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
    begin
      ServerSocket1.Active := True;
    end;procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      Memo1.Lines.Add(Socket.ReceiveText);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      ClientSocket1.Active := True;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      ClientSocket1.Socket.SendText('From aaaa');
    end;procedure TForm1.ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      memo1.Lines.Add('connected');
    end;end.
    object Form1: TForm1
      Left = 192
      Top = 114
      Width = 362
      Height = 259
      Caption = 'a'
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      PixelsPerInch = 96
      TextHeight = 13
      object Button1: TButton
        Left = 80
        Top = 168
        Width = 75
        Height = 25
        Caption = 'Link'
        TabOrder = 0
        OnClick = Button1Click
      end
      object Memo1: TMemo
        Left = 56
        Top = 24
        Width = 249
        Height = 121
        Lines.Strings = (
          'Memo1')
        TabOrder = 1
      end
      object Button2: TButton
        Left = 208
        Top = 168
        Width = 75
        Height = 25
        Caption = 'Send'
        TabOrder = 2
        OnClick = Button2Click
      end
      object ServerSocket1: TServerSocket
        Active = False
        Port = 9999
        ServerType = stNonBlocking
        OnClientRead = ServerSocket1ClientRead
        Left = 104
        Top = 56
      end
      object ClientSocket1: TClientSocket
        Active = False
        ClientType = ctNonBlocking
        Host = 'ctixp'
        Port = 8888
        OnConnect = ClientSocket1Connect
        Left = 168
        Top = 56
      end
    end