程序启动时,做以下操作
ServerSocket1.port:=1001;
ServerSocket1.open;然后用客户端连接服务器,客户端可以正常向服务器发送消息,但是服务端向客户端发送消息时候服务端就报错我得发送语句是这样:procedure TForm1.Button2Click(Sender: TObject);
begin
    ServerSocket1.Socket.SendText(edit2.Text);
end;
但是一发送就报错,出现如下信息:(已经检查不是客户端问题)【Debugger Exception Notification】
Project Project1.exe raised exception class ESocketError with message 'Windows socket error:'由于套接字没有连接并且(当使用一个sendto调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。(10057),on API 'send".Process stopped.Use Step or Run to continue.□View CPU Window

解决方案 »

  1.   

    身边没有Delphi,凭记忆告诉你。ServerSocket1.Connection[0].Socket.SendText(edit2.Text);服务端要指定是第几个连接。
      

  2.   

    你要向客户端回送消息,也可以使用线程来完成,我记得ServerSocket在接受到客户端连接时,可以建立一个对应的线程,该线程有与客户端通讯的Socket对象,直接用这个对象发消息即可。
      

  3.   

    你要向客户端回送消息,也可以使用线程来完成,我记得ServerSocket在接受到客户端连接时,可以建立一个对应的线程,该线程有与客户端通讯的Socket对象,直接用这个对象发消息即可。
      

  4.   

    关键是我使用
    ServerSocket1.Socket.SendText(edit2.Text);
    发送不出消息但是如果按照楼上得方法
    ServerSocket1.Connection[0].Socket.SendText(edit2.Text);当Serversocket1按“点”时候,根本就没有Connection这个属性??请问怎么办???
      

  5.   

    非常同意menliwxj(有缘)的观点,当ClientSocket连接上ServerSocket后,在ServerSocket的OnClientConnect事件里,就会建立一个此ClientSocket对应的Socket: TCustomWinSocket对象,直接用这个对象发消息即可,如:Socket.SendText(Msg).
      

  6.   

    在ServerSocket的OnClientConnect事件里,将Socket对象保存起来
      

  7.   

    请问怎么做OnClientConnect的操作??可以给我说说么?
      

  8.   

    type 
      TClient=Class(TObject)
        FCHandle: integer;          
        FListLink: Integer;
        FCSocket:TCustomWinSocket;  
        FCUserName:string;          
        FCAddress:string;           
        FCUsed: boolean;            
    end; ClistList: TList; //全局变量 保存所有的Clinet信息procedure Tfrm_ServerMain.ServerSocketClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    var
      Client:TClient;
    begin
      Client := TClient.Create;
      Client.FCHandle := Socket.SocketHandle;
      Client.FCSocket := Socket;
      Client.FCAddress := Socket.RemoteAddress;
      Client.FCUserName := 'Login';
      Client.FListLink := lbClients.Items.Count;
      lbClients.Items.Add(Client.FCUserName);
      Socket.Data := Client;
      ClistList.Add(Client);
    end;
    //发消息
    var
     Msg:string;
     Client:TClient;
    begin
      ......在ClistList对象里,找到你要发消息的Client
      Client := ClistList.Items[lbClients.ItemIndex];
      Client.FCSocket.SendText(Msg)
    end;
      

  9.   

    ServerSocket1.Socket这个是侦听SOCKET,不是用来连接发数据的。。可以这样用ServerSocket1.Socket.Connections[0].SendText(edit2.Text);