你不会socket通讯吗?建一个ServerSocket和若干个ClientSocket,
通过ServerSocket实现同时在线,同时聊天!

解决方案 »

  1.   

    一定要有serversocket一个作为服务器的,所有client的信息发给服务器,再由服务器发给各个client.
      

  2.   

    给你个例程,希望对你有所帮助,记得给分哟,30分太少了点
    用Delphi实现远程控制  
    一、实现原理
    ---- 实行远程控制,实际上就是一个服务器程序(以下简称被控程序)和一个客户程序(以下简称主控程序):被控方即为服务器程序,它监听客户的请求,并作出处理;主控方即为客户程序,它连接上服务器后,发出自己的请求,服务器便根据自已的请求进行不同的响应。
    二、编写主控程序
    ---- 1、新建一个项目Client.dpr,并把一个TClientSocket元件放到Form上,它的属性设置如下:Port设为100(端口号可任意设置,只要求双方统一),其它属性按默认值。在窗体上添加两个TEdit:Edit1用来输入发送的字符,Edit2用来输入IP地址;添加两个TButton:Button1点击后用来连接被控机,Button2点击后用来发送字符,然后声明一个私有变量ConnectFlag,表示双方是否连接好:       private
             ConnectFlag:Boolean;
    ---- 2、ClientSocket1的OnConnect事件代码如下:   
        procedure TForm1.ClientSocket1Connect(Sender: TObject;Socket: TCustomWinSocket);
           begin 
             ConnectFlag:=True; //表示连接成功
           end;
    ---- 3、ClientSocket1的OnError事件代码如下:procedure TForm1.ClientSocket1Error(Sender: TObject;
    Socket: TCustomWinSocket; ErrorEvent: 
    TErrorEvent;var ErrorCode: Integer);
           begin
    Application.MessageBox(PChar('    不能连接到IP地址
     : ' + Edit2.Text+'。'+
    #13+'可能是监听程序没有运行或网络故障!'),'
    连接错误',MB_OK+MB_ICONSTOP);
              ErrorCode := 0; 
           end;
    ---- 4、Button1的OnClick事件代码如下:procedure TForm1.Button1Click(Sender: TObject);
    begin
    with ClientSocket1 do  begin
    if Active then begin
    Active := False;//在连接之前首先关闭
    ConnectFlag:=False; //置连接标志为假
    end;
    if Length(Edit2.Text) > 0 then begin
    Host := Edit2.Text; //指定IP地址或主机名
    Active := True;     
                end;   
              end;
           end;
    ---- 5、Button2的OnClick事件代码如下:procedure TForm1.Button2Click(Sender: TObject);
           begin
              if ConnectFlag then
    ClientSocket1.Socket.SendText(Edit1.Text)
      //如果连接成功则发送字符串
              else
    Application.MessageBox(PChar('    没有连接到地址 :
     ' + Edit2.Text+'。'+
    #13+'检查IP地址是否存在或是否已经连接!'),'
    提示信息',MB_OK+MB_ICONSTOP);
           end;    
    三、编写被控程序---- 
      1、新建一个项目Server.dpr,并把一个TServerSocket元件放到Form上,它的属性设置如下:Active设为True;Port设为100,其它属性按默认值。---- 
      2、ServerSocket1的OnClientRead事件代码如下:
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;Socket: TCustomWinSocket);
           var
             Str:PChar;
             Code,V:Integer;
           begin
        Str:=PChar(Socket.ReceiveText);  //接收字符串
        Val(Str,V,Code); //处理接收的字符串,首先转换字符串为整数   
       if Code< >0 then  
       Application.MessageBox(Str,'提示信息',MB_OK+MB_ICONINFORMATION) 
    //如果转换后的数据不是一个整型数就通过消息框来显示字符串
       else
           if (V=0)or(V=1)or(V=2) then 
             ExitWindowsEx(V,0) 
    //调用Windows的API函数(V=0表示重新登录、V=1表示关机、V=2表示重启动)
       else
           Application.MessageBox(Str,'提示信息',MB_OK+MB_ICONINFORMATION); 
    //转换后数据不为0、1、2时在消息框内显示字符串
           end;
    ---- 3、修改项目文件,不让窗口显示并且防止它运行两次,修改begin和end之间的代码如下:       begin
      Application.Initialize;
      if FindWindow('TForm1','Form1')=0 then begin 
       //当没有找到Form1时执行下面代码
       Application.ShowMainForm:=False; //不显示主窗口
       Application.CreateForm(TForm1, Form1);
       Application.Run;
        end;
    end.
    四、注意事项---- 1、网络要装配正确并安装TCP/IP协议,且要正常运行。---- 2、首先要运行被控程序。---- 3、必须知道对方的IP地址或主机名。---- 上述程序用Delphi5.0编写,在Windows98对等网、WindowsNT4.0,WIN2000局域网以及Internet上运行通过。最后要声明的是此程序由于能够控制对方的计算机,在实验时要事先经过他人同意,不要给别人造成影响。
      

  3.   

    找MIDWARE控件它有你要的例子。