大家聊聊局域网语音聊天怎么做?

解决方案 »

  1.   

    给你一段程序:unit main;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ACMDialog, ACMWaveIn, ACMWaveOut, StdCtrls, NMUDP, ExtCtrls, Psock;type
      TForm1 = class(TForm)
        ACMDialog1: TACMDialog;
        NMUDP1: TNMUDP;
        Edit1: TEdit;
        Button1: TButton;
        Button2: TButton;
        Image1: TImage;
        Label1: TLabel;
        ACMWaveIn1: TACMWaveIn;
        ACMWaveOut1: TACMWaveOut;
        Label2: TLabel;
        Label3: TLabel;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure ACMWaveIn1Data(data: Pointer; size: Integer);
        procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;
          FromIP: String; Port: Integer);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      PlayPackets:integer;
    implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    var format:pointer;
    begin
     NMUDP1.Remotehost:=edit1.text;
     format:=ACMDialog1.OpenDialog;
     if format=nil then exit;
     ACMWaveOut1.Open(format);
     ACMWaveIn1.Open(format);
     Button1.Enabled:=false;
     Button2.Enabled:=true;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
     ACMWaveIn1.Close;
     ACMWaveOut1.Close;
     Button1.Enabled:=true;
     Button2.Enabled:=false;
    end;procedure TForm1.ACMWaveIn1Data(data: Pointer; size: Integer);
    var
      mdata:array[1..10000] of char;
      k:integer;
      str:string;
    begin
    // str:='send:';
    // for k:=1 to 10 do str:=str+' '+inttostr(integer(pchar(dword(data)+k-1)^));
    // str:='send:'+inttostr(size);
    // memo1.lines.add(str);
     for k:=1 to size do mdata[k]:=pchar(dword(data)+k-1)^;
     NMUDP1.SendBuffer(mdata,size);
    end;procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
      NumberBytes: Integer; FromIP: String; Port: Integer);
    var
      mdata:array[1..10000] of char;
      data:Pchar;
      str:string;
      k:integer;
    begin
     NMUDP1.ReadBuffer(mdata,NumberBytes);
     data:=pchar(dword(@mdata));
    // str:='recv:';
    // for k:=1 to 10 do str:=str+' '+inttostr(integer(pchar(dword(data)+k-1)^));
    // str:='recv:'+inttostr(NumberBytes);
    // memo1.lines.add(str);
     label1.caption:=inttostr(PlayPackets);
     inc(PlayPackets);
     ACMWaveOut1.PlayBack(data,NumberBytes);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
     ACMWaveOut1.visible:=false;
     ACMWaveIn1.visible:=false;
     image1.align:=alclient;
     NMUDP1.ReportLevel := Status_Basic;
     NMUDP1.LocalPort := 6668;
     NMUDP1.RemotePort := 6668;
     PlayPackets:=0;
    end;end.
      

  2.   

    这是一个使用 Banasoft AVPhone 的语音及视频源码聊天程序:http://www.banasoft.com/DownLoad/AVPhone.zip
      

  3.   

    兄弟這里看過來
    http://snpack.fykj.com/OtherDownload.htm
    分多加一點發。。