Indy10中IdtcpClient/Server怎么哟那 Indy10中IdtcpClient/Server怎么哟那我看了Demo,它的用ssl,还要证书,不实用,太麻烦到底怎么用啊IdtcpClient/Server,I9里的到这里到底怎么设置呢?能不能给个简单点的demo,就是简单的连接和传输啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 建议将问题移转至[网络通信]版块。对于使用TIdTCPServer/TIdTCPClient的实例网上有太多了,自己搜索一下。 我看了Demo,它的用ssl,还要证书,不实用,太麻烦///////////你是不是看了SSL的那个例子啊那个例子是教你如果通过SSL访问验证基本上INDY 9 的例子可以转到INDY 10 你是不是看了SSL的那个例子啊那个例子是教你如果通过SSL访问验证基本上INDY 9 的例子可以转到INDY 10////////////////没错不行的,会出错的,很多代码都不通用///////留个QQ吧//////342875137 SERVER:procedure TfrmIndy.TCPServerConnect(AThread: TIdPeerThread);var HexStr: String; NewClient: PClient;begin // AThread1:= AThread; GetMem(NewClient, SizeOf(TClient)); NewClient.DNS := AThread.Connection.LocalName; NewClient.Connected := Now; NewClient.LastAction := NewClient.Connected; NewClient.Thread :=AThread; AThread.Data:=TObject(NewClient); try Clients.LockList.Add(NewClient); finally Clients.UnlockList; end; //spSkinMemo2.Lines.Add(TimeToStr(Time)+' Connection from "'+NewClient.DNS+'"'); //ShowString.TCPDNS :=TimeToStr(Time)+' Connection from "'+NewClient.DNS+'"'; //LogMessage(2);end;procedure TfrmIndy.TCPServerExecute(AThread: TIdPeerThread);var SendStr: String; ReceStr: string;begin // (*---------------------------------TCP 读数据------ *) AThread1:=AThread; ReceStr:=AThread.connection.CurrentReadBuffer; StartTag:= ReceStr[1]; form1.spSkinMemo1.Lines.Add('包: '+StrToHexStr(ReceStr));end;procedure TfrmIndy.TCPServerDisconnect(AThread: TIdPeerThread);var ActClient: PClient;begin ActClient := PClient(AThread.Data); try Clients.LockList.Remove(ActClient); finally Clients.UnlockList; end; FreeMem(ActClient); AThread.Data := nil;end;procedure TfrmIndy.TCPServerCreate;begin Clients := TThreadList.Create; TCPServer := TIdTCPServer.Create(self); IdThreadMgrDefault1:=TIdThreadMgrDefault.Create(self); with TCPServer do begin onconnect:=TCPServerConnect; onDisconnect:=TCPServerDisconnect; onExecute:=TCPServerExecute; ThreadMgr:=IdThreadMgrDefault1; //defaultport:=5007; Active := true; end;end;procedure TfrmIndy.TCPServerClose;begin TCPServer.Active := False; Clients.Free;end;CLIENT:procedure TClientHandleThread.HandleInput;var i:integer; S:string; Result:string;begin //if CB.Command = 'MESSAGE' then ClientFrmMain.IncomingMessages.Lines.Add ('recestr :' + receStr); for I:=1 to Length(S) do begin if I=1 then Result:=IntToHex(Ord(S[1]),2) else Result:=Result+IntToHex(Ord(S[I]),2); end; ClientFrmMain.IncomingMessages.Lines.Add ('recestr :' + Result); {//else if CB.Command = 'DIALOG' then MessageDlg ('"'+CB.MyUserName+'" sends you this message:'+#13+CB.Msg, mtInformation, [mbOk], 0) else // unknown command MessageDlg('Unknown command "'+CB.Command+'" containing this message:'+#13+CB.Msg, mtError, [mbOk], 0);}end;procedure TClientHandleThread.Execute;begin while not Terminated do begin if not ClientFrmMain.Client.Connected then Terminate else try //receStr:=ClientFrmMain.Client.CurrentReadBuffer; ClientFrmMain.Client.ReadBuffer(receStr, SizeOf (receStr)); Synchronize(HandleInput); except end; end;end;procedure TClientFrmMain.CBClientActiveClick(Sender: TObject);begin if CBClientActive.Checked then begin try Client.Connect(10000); // in Indy < 8.1 leave the parameter away ClientHandleThread := TClientHandleThread.Create(True); ClientHandleThread.FreeOnTerminate:=True; ClientHandleThread.Resume; except on E: Exception do MessageDlg ('Error while connecting:'+#13+E.Message, mtError, [mbOk], 0); end; end else begin ClientHandleThread.Terminate; Client.Disconnect; end; ButtonSend.Enabled := Client.Connected; CBClientActive.Checked := Client.Connected;end;procedure TClientFrmMain.ButtonSendClick(Sender: TObject);var CommBlock : TCommBlock; Sendstr: array[1..25] of char;begin sendstr[1]:=char($7B);sendstr[2]:=char($01); sendstr[3]:=char($00);sendstr[4]:=char($16); sendstr[5]:=char($31);sendstr[6]:=char($30);sendstr[7]:=char($31);sendstr[8]:=char($30);sendstr[9]:=char($31);sendstr[10]:=char($30);sendstr[11]:=char($31);sendstr[12]:=char($30);sendstr[13]:=char($31);sendstr[14]:=char($30);sendstr[15]:=char($31); sendstr[16]:=char($DA);sendstr[17]:=char($5E); sendstr[18]:=char($1A);sendstr[19]:=char($A4);sendstr[20]:=char($13);sendstr[21]:=char($8F); sendstr[22]:=char($7B); //7B 01 0016 3130313031303130313031 DA5E 1AA4 138F 7B Client.WriteBuffer (sendstr, 22, true);end; Duplicate case label怎么办? 请问如何用代码实现winamp的播放时的波纹效果? 高手帮我看一下代码!怎么不运行呢?!有关socket的多线程 指定 TShellTreeView 的初始目录 ######任意钱数转换大写,开来帮忙啊!!¥¥¥¥¥¥ 关于mxoutlookbarpro的问题 使用QUERY1进行SQL查询 郁闷ing,送分! 在北京工作的各位兄弟,周六有时间踢球的请进。。。 请问在Delphi中如何动态控制Excel中工具栏的显示,请指教。 WebBrowser怎么刷新框架内页面? 关于msxml接口的问题
///////////
你是不是看了SSL的那个例子啊那个例子是教你如果通过SSL访问验证基本上INDY 9 的例子可以转到INDY 10
////////////////
没错不行的,会出错的,很多代码都不通用
///////
留个QQ吧
//////
342875137
procedure TfrmIndy.TCPServerConnect(AThread: TIdPeerThread);
var
HexStr: String;
NewClient: PClient;
begin
// AThread1:= AThread; GetMem(NewClient, SizeOf(TClient)); NewClient.DNS := AThread.Connection.LocalName;
NewClient.Connected := Now;
NewClient.LastAction := NewClient.Connected;
NewClient.Thread :=AThread; AThread.Data:=TObject(NewClient); try
Clients.LockList.Add(NewClient);
finally
Clients.UnlockList;
end; //spSkinMemo2.Lines.Add(TimeToStr(Time)+' Connection from "'+NewClient.DNS+'"');
//ShowString.TCPDNS :=TimeToStr(Time)+' Connection from "'+NewClient.DNS+'"';
//LogMessage(2);
end;procedure TfrmIndy.TCPServerExecute(AThread: TIdPeerThread);
var
SendStr: String;
ReceStr: string;
begin
// (*---------------------------------TCP 读数据------ *)
AThread1:=AThread;
ReceStr:=AThread.connection.CurrentReadBuffer;
StartTag:= ReceStr[1];
form1.spSkinMemo1.Lines.Add('包: '+StrToHexStr(ReceStr));end;procedure TfrmIndy.TCPServerDisconnect(AThread: TIdPeerThread);
var
ActClient: PClient;
begin
ActClient := PClient(AThread.Data);
try
Clients.LockList.Remove(ActClient);
finally
Clients.UnlockList;
end;
FreeMem(ActClient);
AThread.Data := nil;
end;procedure TfrmIndy.TCPServerCreate;
begin
Clients := TThreadList.Create;
TCPServer := TIdTCPServer.Create(self);
IdThreadMgrDefault1:=TIdThreadMgrDefault.Create(self);
with TCPServer do
begin
onconnect:=TCPServerConnect;
onDisconnect:=TCPServerDisconnect;
onExecute:=TCPServerExecute;
ThreadMgr:=IdThreadMgrDefault1;
//defaultport:=5007;
Active := true;
end;
end;procedure TfrmIndy.TCPServerClose;
begin
TCPServer.Active := False;
Clients.Free;
end;CLIENT:
procedure TClientHandleThread.HandleInput;
var
i:integer;
S:string;
Result:string;
begin
//if CB.Command = 'MESSAGE' then
ClientFrmMain.IncomingMessages.Lines.Add ('recestr :' + receStr);
for I:=1 to Length(S) do
begin
if I=1 then
Result:=IntToHex(Ord(S[1]),2)
else Result:=Result+IntToHex(Ord(S[I]),2);
end;
ClientFrmMain.IncomingMessages.Lines.Add ('recestr :' + Result);
{//else
if CB.Command = 'DIALOG' then
MessageDlg ('"'+CB.MyUserName+'" sends you this message:'+#13+CB.Msg, mtInformation, [mbOk], 0)
else // unknown command
MessageDlg('Unknown command "'+CB.Command+'" containing this message:'+#13+CB.Msg, mtError, [mbOk], 0);
}end;procedure TClientHandleThread.Execute;
begin
while not Terminated do
begin
if not ClientFrmMain.Client.Connected then
Terminate
else
try
//receStr:=ClientFrmMain.Client.CurrentReadBuffer;
ClientFrmMain.Client.ReadBuffer(receStr, SizeOf (receStr));
Synchronize(HandleInput);
except
end;
end;
end;procedure TClientFrmMain.CBClientActiveClick(Sender: TObject);
begin
if CBClientActive.Checked then
begin
try
Client.Connect(10000); // in Indy < 8.1 leave the parameter away ClientHandleThread := TClientHandleThread.Create(True);
ClientHandleThread.FreeOnTerminate:=True;
ClientHandleThread.Resume;
except
on E: Exception do MessageDlg ('Error while connecting:'+#13+E.Message, mtError, [mbOk], 0);
end;
end
else
begin
ClientHandleThread.Terminate;
Client.Disconnect;
end; ButtonSend.Enabled := Client.Connected;
CBClientActive.Checked := Client.Connected;
end;procedure TClientFrmMain.ButtonSendClick(Sender: TObject);
var
CommBlock : TCommBlock;
Sendstr: array[1..25] of char;
begin
sendstr[1]:=char($7B);sendstr[2]:=char($01);
sendstr[3]:=char($00);sendstr[4]:=char($16);
sendstr[5]:=char($31);sendstr[6]:=char($30);sendstr[7]:=char($31);sendstr[8]:=char($30);sendstr[9]:=char($31);sendstr[10]:=char($30);sendstr[11]:=char($31);sendstr[12]:=char($30);sendstr[13]:=char($31);sendstr[14]:=char($30);sendstr[15]:=char($31);
sendstr[16]:=char($DA);sendstr[17]:=char($5E);
sendstr[18]:=char($1A);sendstr[19]:=char($A4);sendstr[20]:=char($13);sendstr[21]:=char($8F);
sendstr[22]:=char($7B);
//7B 01 0016 3130313031303130313031 DA5E 1AA4 138F 7B Client.WriteBuffer (sendstr, 22, true);
end;