首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么在网内向另一台主机发送消息?并且能够看到对方收到后的提示

2012-03-08 
如何在网内向另一台主机发送消息?并且能够看到对方收到后的提示?效果有点像飞鸽传书那样,网内主机A给B发送

如何在网内向另一台主机发送消息?并且能够看到对方收到后的提示?
效果有点像飞鸽传书那样,
网内主机A给B发送一个消息后,消息显示在B主机的桌面最前面,B主机点击消息后表示收到,此时主机A会收到一个反馈信息,表示主机B已经接收到消息了。
主机A和B的通信信息可以记录到服务器C的数据库中,以备查询历史纪录。

[解决办法]
procedure TForm1.ListBox1DblClick(Sender: TObject);
var
tt:TMemoryStream;
op:tjpegimage;
begin
statusbar1.Panels.Items[2].Text:= 'getting the desktop of '+listbox1.Items.Strings[listbox1.ItemIndex];
idtcpclient1.Disconnect;
idtcpclient1.Host:=listbox1.Items.Strings[listbox1.ItemIndex];
idtcpclient1.Port:=1188;
try
tt:=tmemorystream.Create;
idtcpclient1.Connect(500);
idtcpclient1.WriteLn( 'getdesktop ');
op:=tjpegimage.Create;
idtcpclient1.ReadStream(tt,-1,true);
tt.Position:=0;
//tempjpeg:=TJPEGImage.Create;
op.LoadFromStream(tt);

Image1.Picture.Bitmap.Assign(op);

//image1.Picture.Bitmap.LoadFromStream(tt);
except
statusbar1.Panels.Items[2].Text:= 'sorry,can not to connect '+listbox1.Items.Strings[listbox1.ItemIndex]+ ' mybe it is power off ';
end;
end;

用idtcpclient1作客户端

用idtcpserver作服务端

用writeln发文本
[解决办法]
楼上正解!
客户端 IdAntiFreeze1和idtcpclient1
服务端放IdTCPServer1
服务端 IdTCPServer1.writeln
客户端 idtcpclient1.readln
反过来客户端向服务端发送一样的
[解决办法]
这得分清 你的 另一台主机 的不同情况
1 如果同一个内网里 事情就简单的多了,直接用IDNY中的UDP server来做就可以了
2 如果你的另一个主机在公网上,也可以用UDP server来做
3 如果在不同的NAT后面,那问题就麻烦些了,需要一些技术,如UDP HOLE技术,Nat穿透等概念 你自己查下 我现在也没弄出来呢!
[解决办法]
打开飞鸽发送局域网广播包,公布自己的ip地址,这样其它计算机就可以通过接收到的这个IP地址与这太机器进行聊天等操作,当消息接收端打开后发一个回执包,文件传输采用tcp/ip协议那就更简单了,个人认为飞鸽是im即时通软件中最简单的一种

热点排行