请教:
是这样的,
我有服务器端和客户端,
用 serversocket 和 clientsocket 来通信,客户端不知道服务器的 IP 地址, 服务器知道客户端的 IP 地址,假设,先运行客户端:客户端程序如下:
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp;type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    procedure FormCreate(Sender: TObject);
    procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  IP:string;
implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
      ClientSocket1.Open;
end;procedure TForm1.ClientSocket1Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
     ErrorCode:=0;
end;end.
服务器:
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp;type
  TForm1 = class(TForm)
    ServerSocket1: TServerSocket;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin
      ServerSocket1.Socket.RemoteAddress:='192.168.0.118';
      ServerSocket1.Socket.SendText('dfdf');
end;procedure TForm1.Button2Click(Sender: TObject);
begin
      ServerSocket1.Socket.RemoteAddress:='192.168.0.119';
      ServerSocket1.Socket.SendText('dfdf');
end;procedure TForm1.FormCreate(Sender: TObject);
begin
     ServerSocket1.Open;
end;end.服务器端编译有错误:
ServerSocket1.Socket.RemoteAddress:='192.168.0.118';
cannot assign to a read-only property
各位大哥,那我怎么使 服务器和客户端建立连接
不客户端不进行任何操作谢谢!

解决方案 »

  1.   

    能不能用socket传到客户端,服务器ip然后服务器再连接
      

  2.   

    TServerSocket的Socket.RemoteAddress是只读的。“客户端不知道服务器的 IP 地址”
    这台服务器已经没有“资格”作服务器了。把知道IP地址的设计成ServerSocket,不知道IP地址的设计成ClientSocket。
      

  3.   

    谢谢 ffanpeng 大哥 和 jadeluo 大哥!jadeluo 大哥 是这样的:我的是一个 LED 节目播放软件,而我所说的客户端是高速公路上的 ,LED 显示屏,
    所以 人是不能到 客户端去操作的
    因为有很多的 LED 显示屏
    所以服务器需要控制很多个,
    假设 服务器 的 IP 变了的话,
    人很难再到每个客户端去修改把知道IP地址的设计成ServerSocket,不知道IP地址的设计成ClientSocket。
    不是很合适,大哥,还有其他办法吗?
    谢谢!
      

  4.   

    也许我还没有表叙清楚:
    是这样的,
    先不说 服务器 和客户端有一台电脑(A)它可以把 信息 发送给 另外好几电脑(B,C,D)
    (这另外好几台电脑(B,C,D)就是直接和公路上的显示屏连接的,
    这几台电脑(B,C,D)的IP 地址是确定的)电脑 A 的 IP 是变化的,也就是说不知道的。那么如果 A 做为客户端的话,
    那么 A 上必须放 3 个 ClientSocket 分别与 B,C,D 的 ServerSocket 连接,是吗?
    (也许 不止 B,C,D ,有上10 台,那  A 上不是需要 很多个 ClientSocket,是吗?)谢谢!
      

  5.   

    方法很多,比如你原来的设计是A当服务器的,不过其它机器不知道A的IP
    你可以在A上多放一个ClientSocket,其它机器(B,C,D)上放多个ServerSocket并在监听着的
    然后A在某种情况与依次与B,C,D通讯,告诉自己的IP地址后就断开接着其它机器都知道了A的IP,就可以按你原来的作法了