考虑到两台电脑可能是企业局域网中的客户机,ip地址可能是“192。168。0。*”之类,如直接使用IP地址可能不行,但QQ,MSN好象没这方面的问题,但需在广域网有一台服务器。但不知客户端软件该如何编写。请大家帮帮忙,UP

解决方案 »

  1.   

    你可以使用 INTERNET 页中的 CLIENTSERVER 控件来做。
      

  2.   

    奇怪,怎么這么多人在寫這樣的程序。那我就再貼一次:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons, ExtCtrls, NMUDP;type
      TForm1 = class(TForm)
        Panel1: TPanel;
        Label1: TLabel;
        BB_Send: TBitBtn;
        Edit1: TEdit;
        Panel2: TPanel;
        Memo1: TMemo;
        Panel3: TPanel;
        ListBox1: TListBox;
        BB_Add: TBitBtn;
        BB_Del: TBitBtn;
        BB_Exit: TBitBtn;
        NMUDP1: TNMUDP;
        procedure FormCreate(Sender: TObject);
        procedure BB_SendClick(Sender: TObject);
        procedure Edit1KeyPress(Sender: TObject; var Key: Char);
        procedure BB_AddClick(Sender: TObject);
        procedure BB_DelClick(Sender: TObject);
        procedure BB_ExitClick(Sender: TObject);
        procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;
          FromIP: String; Port: Integer);
        procedure FormShow(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      ComputerName: array[0..127] of Char;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    var
      sz:dword;
    begin
      sz:=SizeOf(Computername);
      GetComputerName(ComputerName,sz);
      ListBox1.Items.Clear;
      ListBox1.Items.Add('大家');
      ListBox1.Items.Add(ComputerName);
      ListBox1.ItemIndex:=0;
    end;procedure TForm1.BB_SendClick(Sender: TObject);
    var
      MyStream:TMemoryStream;
      TmpStr:String;
      i:integer;
    begin
      if Edit1.Text<>'' then
        begin
          NMUDP1.ReportLevel:=Status_Basic;
          NMUDP1.RemotePort:=8888;//必须与LocalPort相一致。
          if ListBox1.Items[ListBox1.ItemIndex]=ComputerName then
            Edit1.Text:=ComputerName+'自言自语道'+Edit1.Text//和自己说
          else
            Edit1.Text:=ComputerName+'对'+ListBox1.Items[ListBox1.Itemindex]+'说'+Edit1.Text;
          TmpStr:=Edit1.Text;
          MyStream:=TMemoryStream.Create;
          try
            MyStream.Write(TmpStr[1],Length(Edit1.Text));
            if ListBox1.ItemIndex=0 then
              begin
                for i:=1 to ListBox1.Items.Count-1 do //如果选择“大家”,对所有的网友发送信息
                  begin
                    NMUDP1.RemoteHost:=ListBox1.Items[i];//远程主机的名称或地址
                    NMUDP1.SendStream(MyStream);//发送信息
                  end;
              end
            else //私聊
              begin
                NMUDP1.RemoteHost:=ListBox1.Items[ListBox1.itemindex];//
                NMUDP1.SendStream(MyStream);
              end;
          finally
            MyStream.Free;
          end;
          if (ListBox1.ItemIndex<>0) and (ListBox1.Items[ListBox1.ItemIndex]<>ComputerName) then
            Memo1.Lines.Add(TmpStr);
          Edit1.Text:='';
          Edit1.SetFocus;
        end
      else
        Edit1.SetFocus;
    end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if (key=#13) then
        BB_Send.Click;
    end;procedure TForm1.BB_AddClick(Sender: TObject);
    var
      InputString:String;
    begin
      InputString:=InputBox('增加聊天对象','IP地址或计算机名:','');
      if InputString<>'' then
        ListBox1.Items.Add(InputString);
      ListBox1.ItemIndex:=0;
    end;procedure TForm1.BB_DelClick(Sender: TObject);
    begin
      if ListBox1.ItemIndex<>0 then
        ListBox1.Items.Delete(ListBox1.ItemIndex);
    end;procedure TForm1.BB_ExitClick(Sender: TObject);
    begin
      Close;
    end;procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
      NumberBytes: Integer; FromIP: String; Port: Integer);
    var
      MyStream: TMemoryStream;
      TmpStr: String;
    begin
      MyStream:=TMemoryStream.Create;
      try
        NMUDP1.ReadStream(MyStream);
        SetLength(TmpStr,NumberBytes);
        MyStream.Read(TmpStr[1],NumberBytes);
        Memo1.Lines.Add(TmpStr);
      finally
        MyStream.Free;
      end;
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
      Edit1.SetFocus;
    end;end.
      

  3.   

    http://www.2ccc.com/article.asp?articleid=53