首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请问:小弟我这样的情况需要怎样处理?(SOCKET 如何使服务器和客户端建立连接)多谢

2012-03-20 
请教:我这样的情况需要怎样处理?(SOCKET 怎么使服务器和客户端建立连接)谢谢!请教:是这样的,我有服务器端

请教:我这样的情况需要怎样处理?(SOCKET 怎么使服务器和客户端建立连接)谢谢!
请教:
是这样的,
我有服务器端和客户端,
用   serversocket   和   clientsocket   来通信,

客户端不知道服务器的   IP   地址,   服务器知道客户端的   IP   地址,

假设,先运行客户端:

客户端程序如下:
unit   Unit1;

interface

uses
    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;

interface

uses
    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


各位大哥,那我怎么使   服务器和客户端建立连接
不客户端不进行任何操作

谢谢!

[解决办法]
能不能用socket传到客户端,服务器ip然后服务器再连接
[解决办法]
TServerSocket的Socket.RemoteAddress是只读的。

“客户端不知道服务器的 IP 地址”
这台服务器已经没有“资格”作服务器了。

把知道IP地址的设计成ServerSocket,不知道IP地址的设计成ClientSocket。
[解决办法]
方法很多,比如

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

接着其它机器都知道了A的IP,就可以按你原来的作法了

热点排行