IdTCPServer多个客户端同时访问的问题 我用Indy TCP,做一个INTERNET通迅程序,但多个客户端同时防问服务器端时会产生错误,请问该怎么解决??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考indy demo 下的IdTCPDemo服务器自己维护连接的客户端信息,服务器会自动为每个客户端建立一个线程的呀。{------------------------------通讯客户端消息程-------------------------}type TClientMessageThread = class(TThread) private MsgCommand: string; //消息命令 procedure HandleMessage; protected procedure Execute; override; end;{---------------------------------------------------------------------}if not IdClient.Connected then begin // 如何获得主机IP和Port IdClient.Host := Dm_send.ServerIP; IdClient.Port := Dm_send.ServerPort; try IdClient.Connect(10000); ClientThread := TClientMessageThread.Create(True); ClientThread.FreeOnTerminate := True; ClientThread.Resume; except on E: Exception do begin MessageDlg('连接服务器错误:' + #13 + E.Message, mtError, [mbOk], 0); Application.Terminate; end; end; endprocedure TClientMessageThread.Execute;begin try while not Terminated do begin if not Fm_Main_Client.IdClient.Connected then Terminate else try MsgCommand := Fm_Main_Client.IdClient.ReadLn(); Synchronize(HandleMessage); except end; end; except end;end;procedure TClientMessageThread.HandleMessage;var MsgID: Integer;begin MsgID := StrToInt(Trim(Copy(MsgCommand, 1, 2))); case MsgID of 0: ; 1: ; end;end; 利用DELPHI中的MSComm控件实现单片机与PC机的串口通信程序该怎么编啊? 一个关于case语言的应用 如何获取未使用键盘、鼠标的时间? 關於漢字編碼問題,大哥,大姐,救一下小弟 如何将TreeView里的树右移? 有没有Delphi的矢量绘图原代码或相关资源? 用Delphi做题库软件的难题 处于迷茫阶段的初学者的问题 请帮忙看看下面代码错在那里了 求救!求救!关于接口! 我下载了indy 9的DEMOS,偏偏少了一个 httpclient ,谁能发一个给我,谢谢! 如何在另一个程序的菜单中增加一个自己定义的菜单??
服务器自己维护连接的客户端信息,服务器会自动为每个客户端建立一个线程的呀。
{------------------------------通讯客户端消息程-------------------------}
type
TClientMessageThread = class(TThread)
private
MsgCommand: string; //消息命令
procedure HandleMessage;
protected
procedure Execute; override;
end;
{---------------------------------------------------------------------}if not IdClient.Connected then
begin
// 如何获得主机IP和Port
IdClient.Host := Dm_send.ServerIP;
IdClient.Port := Dm_send.ServerPort;
try
IdClient.Connect(10000);
ClientThread := TClientMessageThread.Create(True);
ClientThread.FreeOnTerminate := True;
ClientThread.Resume;
except
on E: Exception do
begin
MessageDlg('连接服务器错误:' + #13 + E.Message, mtError, [mbOk], 0);
Application.Terminate;
end;
end;
endprocedure TClientMessageThread.Execute;
begin
try
while not Terminated do
begin
if not Fm_Main_Client.IdClient.Connected then
Terminate
else
try
MsgCommand := Fm_Main_Client.IdClient.ReadLn();
Synchronize(HandleMessage);
except
end;
end;
except
end;end;
procedure TClientMessageThread.HandleMessage;
var
MsgID: Integer;
begin
MsgID := StrToInt(Trim(Copy(MsgCommand, 1, 2)));
case MsgID of
0: ;
1: ;
end;
end;