Indy10中IdtcpClient/Server怎么哟那
我看了Demo,它的用ssl,还要证书,不实用,太麻烦到底怎么用啊IdtcpClient/Server,I9里的到这里到底怎么设置呢?能不能给个简单点的demo,就是简单的
连接和传输啊?
我看了Demo,它的用ssl,还要证书,不实用,太麻烦到底怎么用啊IdtcpClient/Server,I9里的到这里到底怎么设置呢?能不能给个简单点的demo,就是简单的
连接和传输啊?
解决方案 »
- 祝奶奶的伤早日康复!
- 急,请高手赐教
- 急需Tppdesigner控件,請提供下載地址!非常感謝!在線等待!!!
- help~!
- 由于客户的报表经常变,所以想自己设计报表,不知怎样去实现?
- 菜鸟问题,在delphi里面怎么连接ACCESS数据库?
- Form1设为avilable form.用Application.CreatForm(TForm1,Form1);Form1.Show;创建子窗体出错。是不是创建MDI或CHILD不能用以上方法啊?
- 我以前是做软件,现在要做软件实施要注意什么?
- 在两张图片人像中,如何比较图片中的头像是否一致,脸的轮廓如何取下比较???在线!!!急!!!
- 怎样去掉控件的焦点?
- 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;