IdTCPServer和IdTCPClient的问题(急急急急…………) (50分)

  • 主题发起人 主题发起人 happyloner
  • 开始时间 开始时间
H

happyloner

Unregistered / Unconfirmed
GUEST, unregistred user!
我想实现在局域网内一台机器向另外发送一台机器消息,接到消息后
自动弹出对话框显示信息,现在基本功能已经实现了,但在关闭服务器程序时
服务器端会出现异常,EOSError,窗口句柄无效,怎么可以避免这个问题,在服务器
端只写了IdTCPServer的OnExecute事件
procedure Tmainfrm.IdTCPServer1Execute(AThread: TIdPeerThread);
var
S : String;
i : Integer;
begin
S := AThread.Connection.ReadLn(#10#10, 100);
S := Trim(S);
if S <> '' then
begin
with IdTCPServer1.Threads.LockList do
begin
try
for i := 0 to Count - 1 do
begin
aThread := Items;
aThread.Connection.WriteLn(S + #10#10);
end;
try
Beep();
showmessage(S);
//GetMsgfrm.Memo1.text:=S;
//GetMsgfrm.showmodal;
except
end;
finally
IdTCPServer1.Threads.UnlockList;
end;
end;
end;
end;
窗体关闭时
IdTCPServer1.Active:=false;
谢谢了
 
net send [computer name or ip] message
 
呵呵,瘟都死的信使可以用了
winexec('net send '+ipaddress+message,......
 
win98下可以用吗?
 
最好用能Indy中的控件
 
用udp控件啊,delphi带有一个局域网内聊天的例子可以参考。
 
我用的是delphi7,没有找到
 
在windwos2000中
用net send ip 消息
 
我也出现过类公似的问题,关注!
 
这段代码应该是将本机收到的信息发给所有和本机连接的客户机.
你可以将代码改成如下试一试:

procedure Tmainfrm.IdTCPServer1Execute(AThread: TIdPeerThread);
var
S : String;
i : Integer;
TempAthread:TIdPeerThread;
begin
S := AThread.Connection.ReadLn(#10#10, 100);
if length(trim(S))>0 then
begin
application.ProcessMessages;
try
with IdTCPServer1.Threads.LockList do
begin
for i := 0 to Count - 1 do
begin
TempThread :=TidPeerThread( Items);
if Not AThread.Terminated then
begin
try
TempAThread.Connection.WriteLn(S + #10#10);
except
end;
end;
end;
Beep();
showmessage(S);
end;
finally
IdTCPServer1.Threads.UnlockList;
end;
end;
end;
 
这个错误好象是你的服务程序没有释放掉客户的连接造成的,看看是不是。
 
这个问题是Client 端无法与Server端建立连接引起的,我的解决办法就是
用try except end来屏蔽错误消息,就可以正常使用了
 
后退
顶部