请教:
是这样的,
我有服务器端和客户端,
用 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
各位大哥,那我怎么使 服务器和客户端建立连接
不客户端不进行任何操作谢谢!
是这样的,
我有服务器端和客户端,
用 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
各位大哥,那我怎么使 服务器和客户端建立连接
不客户端不进行任何操作谢谢!
这台服务器已经没有“资格”作服务器了。把知道IP地址的设计成ServerSocket,不知道IP地址的设计成ClientSocket。
所以 人是不能到 客户端去操作的
因为有很多的 LED 显示屏
所以服务器需要控制很多个,
假设 服务器 的 IP 变了的话,
人很难再到每个客户端去修改把知道IP地址的设计成ServerSocket,不知道IP地址的设计成ClientSocket。
不是很合适,大哥,还有其他办法吗?
谢谢!
是这样的,
先不说 服务器 和客户端有一台电脑(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,是吗?)谢谢!
你可以在A上多放一个ClientSocket,其它机器(B,C,D)上放多个ServerSocket并在监听着的
然后A在某种情况与依次与B,C,D通讯,告诉自己的IP地址后就断开接着其它机器都知道了A的IP,就可以按你原来的作法了