在窗口里放置了ServerSocket控件!并且成功地连接了客户端!可是在服务端只能在ServerSocket的OnClientRead事件中向客户端发送消息!在其他地方就不能,提示以下错误:‘Windows Socket Error: 由于套接字没有连接并且(当合用一个Sendto 高用发送数据报套接字时)没有提供地址,发送或接数据的请求没有被接受。(10057),On API'Send'’!请问一下我要怎样才能在一个按钮事件中向客户端发关消息呀?请写出代码,谢谢!

解决方案 »

  1.   

    只要建立连接之后,可以在任何可以访问ServerSocket的地方对客户端发送消息。
    如下代码在2003及D6下测试通过
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ClientSocket1.Active:= True;
    end;procedure TForm1.ClientSocket1Read(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      ShowMessage(Socket.ReceiveText);
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      i     : Integer;
    begin
      if ServerSocket1.Socket.ActiveConnections<1 then Exit;
      for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do
        ServerSocket1.Socket.Connections[i].SendText('test');
    end;
    注:
    ServerSocket ClientSocket的连接地址及端口在控件中直接设置
      

  2.   

    给指定的客户发信息很简单,serversocket1.Socket.connections[0].SendText(richedit1.text)这句就是向第一个连接的客户发送信息,你可以把上面那个connections[0]中的0改为其他的,或是1,就是发个第二个客户端,当然,要保证你也那么多的用户连接哦,好了,有问题再发贴问吧。