考虑到两台电脑可能是企业局域网中的客户机,ip地址可能是“192。168。0。*”之类,如直接使用IP地址可能不行,但QQ,MSN好象没这方面的问题,但需在广域网有一台服务器。但不知客户端软件该如何编写。请大家帮帮忙,UP
解决方案 »
- 关于Delphi 2010设置Excel 2003 格式问题
- 求delphi的数据类型
- Edit1KeyPress 的小问题
- delphi中使用XMLDocument读取大XML文件速度非常慢,求解决方案
- 什么样的Delphi书比较好
- 怎样以共享方式打开一个dbf表?
- delphi6图片控件的问题
- 帮我一下,怎样看CSDN的期刊?
- 代码来了,大家快来下载啊!我是 兔子(Rabbit1125)!
- ACCESS2000在DELPHI7下用ADOQuery中的以下SQL语句,没有提示语法错误,能运行,但是数据表没有更新
- p2p
- 有关ADO/MIDAS(TADOQuery+TDataSetProvider+TClientDataSet)
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.