delphi idtcpclient怎么做 [问题点数:100分]

Bbs1
本版专家分:0
结帖率 0%
Bbs1
本版专家分:10
Bbs1
本版专家分:10
Bbs7
本版专家分:21280
Blank
红花 2019年2月 其他开发语言大版内专家分月排行榜第一
2019年1月 Delphi大版内专家分月排行榜第一
2018年8月 Delphi大版内专家分月排行榜第一
2018年7月 Delphi大版内专家分月排行榜第一
2018年4月 Delphi大版内专家分月排行榜第一
2018年3月 Delphi大版内专家分月排行榜第一
Blank
黄花 2016年11月 Delphi大版内专家分月排行榜第二
Blank
蓝花 2011年10月 其他开发语言大版内专家分月排行榜第三
2010年8月 其他开发语言大版内专家分月排行榜第三
2007年5月 其他开发语言大版内专家分月排行榜第三
Bbs9
本版专家分:50645
Blank
红花 2018年11月 Delphi大版内专家分月排行榜第一
2018年5月 Delphi大版内专家分月排行榜第一
2018年2月 Delphi大版内专家分月排行榜第一
2018年1月 Delphi大版内专家分月排行榜第一
2017年12月 Delphi大版内专家分月排行榜第一
2017年8月 Delphi大版内专家分月排行榜第一
2017年7月 Delphi大版内专家分月排行榜第一
2017年5月 Delphi大版内专家分月排行榜第一
2017年3月 Delphi大版内专家分月排行榜第一
2017年2月 Delphi大版内专家分月排行榜第一
2016年12月 Delphi大版内专家分月排行榜第一
2016年11月 Delphi大版内专家分月排行榜第一
2016年10月 Delphi大版内专家分月排行榜第一
2016年9月 Delphi大版内专家分月排行榜第一
2016年8月 Delphi大版内专家分月排行榜第一
2016年7月 Delphi大版内专家分月排行榜第一
2016年6月 Delphi大版内专家分月排行榜第一
2016年5月 Delphi大版内专家分月排行榜第一
2016年4月 Delphi大版内专家分月排行榜第一
2016年3月 Delphi大版内专家分月排行榜第一
2016年2月 Delphi大版内专家分月排行榜第一
2016年1月 Delphi大版内专家分月排行榜第一
2015年12月 Delphi大版内专家分月排行榜第一
2015年11月 Delphi大版内专家分月排行榜第一
2015年10月 Delphi大版内专家分月排行榜第一
2015年9月 Delphi大版内专家分月排行榜第一
2015年8月 Delphi大版内专家分月排行榜第一
2015年7月 Delphi大版内专家分月排行榜第一
2015年6月 Delphi大版内专家分月排行榜第一
2015年5月 Delphi大版内专家分月排行榜第一
2015年4月 Delphi大版内专家分月排行榜第一
2015年3月 Delphi大版内专家分月排行榜第一
2015年2月 Delphi大版内专家分月排行榜第一
2015年1月 Delphi大版内专家分月排行榜第一
2014年12月 Delphi大版内专家分月排行榜第一
2014年11月 Delphi大版内专家分月排行榜第一
Blank
黄花 2017年11月 Delphi大版内专家分月排行榜第二
2017年4月 Delphi大版内专家分月排行榜第二
2017年1月 Delphi大版内专家分月排行榜第二
2014年10月 Delphi大版内专家分月排行榜第二
2014年9月 Delphi大版内专家分月排行榜第二
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Blank
GitHub 绑定GitHub第三方账户获取
DELPHI的Indy IdTCPClient控件如何主动接收数据
如题rnidtcpserver能发送数据,但不知道<em>idtcpclient</em>如果主动去取。目前是用<em>idtcpclient</em>再发一条信息发完后马上去读,可以读到由idtcpserver写进的数据。
delphi 能否用idtcpclient广播到服务器
问题如下:rn <em>idtcpclient</em>和服务器在同一网段。知道服务器的端口,但是不知道服务器的ip,怎么让<em>idtcpclient</em>连上服务器。
哪位高手熟悉delphi中的IdTCPClient控件!
请问:rn 当我向服务器端发送命令后,服务器端会向客户端连续地返回消息时,在不接收消息的情况下,可以判断是否有消息到达吗?因为用IdTCPClient.readlnwait接收消息时不能为空,否则程序将处于不响应状态,我希望能找到一种判断消息到达但不接收的方法,然后用上面的语句接收。
求助!socket delphi通过idTcpClient与Android通讯
<em>delphi</em>做服务端,android做客户端已经实现。现在是android做服务端,<em>delphi</em>做客户端,由于是在android虚拟机上运行,虚拟机的IP与本机IP一样,我知道这样做肯定是有问题,但苦于找不到资料,请高人们帮忙!rn测试代码Delphirn[code=Delphi(Pascal)]rnprocedure TfrmMain.btn1Click(Sender: TObject);rnbeginrn IdTCPClient1.Host := '192.168.0.119';rn IdTCPClient1.Port := 9001;rn tryrn IdTCPClient1.Connect(3000);rn// if IdTCPClient1.Connected thenrn// beginrn// IdTCPClient1.WriteLn('发送消息');rn// end;rn finallyrn// IdTCPClient1.Disconnect;rn end;rnend;[/code]rnjava代码rn[code=Java]rn tryrn rn server = new ServerSocket(9001);rn while(true)rn rn socket=server.accept();rn System.out.println("客户端信息:"+socket.getRemoteSocketAddress());rn InputStream in = (InputStream) socket.getInputStream();rn br=new BufferedReader(new InputStreamReader(in));rn String info=br.readLine();rn System.out.println(info);rn rn rn catch(Exception e)rn rn System.out.println(e.toString());rn [/code]
Delphi 7中IdTCPServer和IdTCPClient使用疑问。
我想用IdTCPServer给指定的客户端发送信息,现在能够获取到在线的客户端IP,就是不知道该怎么写发送代码(客户端如何接收?)。客户端给服务器段发送信息可以实现~[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/29.gif][/img]各位大婶有什么方法没呀?
idtcpclient问题?
高手帮帮忙...网上相关说明真看得含糊!!!rnrn现在程序想把一个Tbitmap类型的图片文件变量 aaa发送到目标机 使用<em>idtcpclient</em>发送应该怎么操作呢?代码怎么写呢!!!rnrn给我直接的代码好吗 我不要告诉我<em>怎么做</em><em>怎么做</em>.我看得含糊!!!rnrn发送了 对方使用idtcpserver怎么把接收到的显示到image上呢?rnrn绝对送分的
IdTCPClient与IdTCPServer
rn 服务器启动的时候,客服端自动连接到服务端。rn 当服务端关闭的时候,客户端如何知道服务端已经关闭(我用IdTCPClient下的onDisconnected事件不能监听到。有时非正常关闭,所以不能发送信息通知客服端)。rn 当客服端启动的时候,自动连接服务端( 如果检测到服务器没启动还继续尝试连接)。rn 当客服端关闭的时候,服务端如何知道客服端已经关闭(客服端有时非正常关闭,所以不能发送信息通知服务端);rnrn 最好有代码哈(能有注释最好不过了^_^) 小弟万分感谢,刚刚学习莫笑小弟哈!
IDTCPClient文件传输
<em>delphi</em>中利用IDTCPClient及IDTCPServer控件进行端到端的文件传输。
IdTCPClient 问题!
IdTCPClient 和IdTCPServer 连接后,没有正常段开连接(IdTCPServer 没有收到IdTCPClient的断开信息).IdTCPServer 怎么判断客户端是否还处于连接状态?
IdTCPClient的一些问题
我想做个http的rnPOST /test.asp?u=123456 rnGET /test.asp?u=123456 rn和一些其他数据发送接收的程序,用IdTCPClient控件做的rn但是遇到了一些问题rnrn之前writeln+ReadLn一次过了rns:=IdTCPClient1.ReadLn();  //在button.click里写的,没有在线程里。总是到了这里就出现"connection closed gracefully"rnrn我在连接前和连接结束都加了IdTCPClient1.Disconnect ;也没有用。。。rn不知道这个到底是什么问题啊??
idtcpclient的困惑!
DELPHI2009下:rnvarrn SendBuf:TIdBytes;rn SendString:string;rnSendString:=chr($91)+chr($3E)+chr($00)+chr($48)......;rnrnSendBuf:=RawToBytes(SendString,Sizeof(SendString));rnIdTCPClient1.Socket.Write(SendBuf,sizeof(SendBuf));rn//发送的时候自动把$00后面的内容给取消掉了,什么缘故呀?
IDTCPClient上传文件
Client:rn[code=Delphi(Pascal)]rnprocedure TClientThread.DoSave;rnvarrn sFilePath, sFileName: string;rnbeginrn sFilePath := 'E://test.txt'; //调用Poineer获取文件路径FilePathrn sFileName := '1.txt';rn if UpLoadFile(sFilePath) thenrn beginrn Insert(frmMain.mmoLog.Lines.Count, FRequest.Text);rn FResponse.Clear;rn FResponse.Add('[Response]');rn FResponse.Add('Command=SaveData');rn FResponse.Add('FileName=' + sFileName);rn FResponse.Add('Result=OK');rn endrn elsern beginrn Insert(frmMain.mmoLog.Lines.Count, FRequest.Text);rn FResponse.Clear;rn FResponse.Add('[Response]');rn FResponse.Add('Command=SaveData');rn FResponse.Add('Result=Fail');rn end;rn SendResponse;rnend;rnrnfunction TClientThread.UpLoadFile(sFileName: string):Boolean;rnvarrn FStream: TFileStream;rnbeginrn Result := False;rn if sFileName = '' thenrn beginrn Insert(frmMain.mmoLog.Lines.Count, '无法获取需要上传的文件路径!');rn Exit;rn end;rn tryrn FStream := TFileStream.Create(sFileName, fmOpenRead);rn FStream.Position := 0;rn FStream.Seek(0,0);rn FClient.WriteStream(FStream, True, True);rn finallyrn FStream.Free;rn end;rn Result := True;rnend; rnrnprocedure TClientThread.SendResponse;rnvarrn Len: Integer;rn Stream: TStringStream;rnbeginrn Stream := TStringStream.Create('');rn Len := Length(FResponse.Text);rn Len := htons(Len);rn Stream.WriteBuffer(Len, SizeOf(Len));rn Stream.WriteString(FResponse.Text);rn FClient.WriteStream(Stream);rn Stream.Free;rnend;rn[/code]rnServer:rn[code=Delphi(Pascal)]rnLen := 0;rn AThread.Connection.ReadBuffer(Len, SizeOf(Buf));rn Len := ntohs(Len);rn Buf.Text := AThread.Connection.ReadString(Len);rn if Buf.Values['Result'] = 'OK' thenrn beginrn tryrn FStream := TFileStream.Create(ExtractFilePath(Application.ExeName)+Buf.Values['FileName'],FmCreate);rn AThread.Connection.ReadStream(FStream, 2048, False);rn finallyrn FStream.Free;rn end;rn end;rn mmoLog.Lines.Add(Buf.Text);rn[/code]rnrn我现在面临的问题就是,客户端多次使用WriteStream方法,所以在服务器使用ReadString()获取的结果与预想的不一致,请问应该怎么处理这个问题
IdTCPClient的问题
我用‘花生壳‘程序开通了一个动态域名,在花生壳中设置好后用ping zhaoyu0116.vicp.net测试ip正确,但用以下代码时却提示rnSocket Erro #10061rnConnection Refusedrn代码:rn==========================================================rnadd:=TcpClient1.LookupHostAddr('zhaoyu0116.vicp.net');rnShowMessage(add);rnIdTCPClient1.Host:=add;rnIdTCPClient1.Connect(5000);rn=================================rn防火墙开或关都一样rn把IdTCPClient1.Host:=add改成IdTCPClient1.Host:='127.0.0.1'就没有问题了,如果把这个程序放到虚拟机中运行就不会提示rnSocket Erro #10061rnConnection Refusedrn而是提示Connect time outrn虚拟机是Win98客户端放在虚拟机,服务端在WinXp 虚拟机用的是NAT 上网rn请问这是什么原因?rn
delphi的语音软件怎么做
我想做一个能够读中文的软件<em>怎么做</em>呀,请高手指点
用DELPHI怎么做秒表?
如题,我想应该用TDateTime类但用哪个函数控制其开始记时呢?
怎么做delphi帮助
用什么软件或方法可以做<em>delphi</em>帮助
delphi项目打包怎么做??
第一次用<em>delphi</em> ,请教怎样打包程序....新手...望大家详细给解释下..谢谢~!~
delphi怎么做错误处理
就这么简单
Delphi 的帮助怎么做
我已经做好了chm文件,请问怎么用<em>delphi</em>调用它?rn(最好能有完整的代码)
delphi怎么做安装程序?
我的系统包括三个文件,并且要调用TC,且有一个文件需要放在TC目录下,该<em>怎么做</em>安装程序?用什么工具?
delphi怎么做窗口类的继承?
比如我做了一个个性化的窗口,我要以后的每个窗口都跟他一样。也就是继承。rn<em>delphi</em><em>怎么做</em>窗口类的继承?rn说详细一点吧,我是菜鸟!
delphi怎么做皮肤
自己做 不用别人的皮肤
delphi这样的控件怎么做
[img=C:\Documents and Settings\Administrator\桌面\QQ截图未命名][/img]
Delphi 中怎么做托盘????
送分
如何中断idTCPCLient的请求??
idTCPClient是阻塞模式的rn使用idTCPClient.write(AString)向服务端发送了一个请求.服务端响应比较缓慢.rn在客户端已经发送了请求上去,而服务端还没有响应的情况下,应该如何才能中断此次请求?
IDTCPClient/Server问题
[code=Delphi(Pascal)]rn//接收代码rn Len := 0;rn AThread.Connection.ReadBuffer(Len, SizeOf(Buf));rn Len := ntohs(Len);rn Buf.Text := AThread.Connection.ReadString(Len); //执行到这就跑了 为什么?rnrn FStream := TFileStream.Create('D:\Test\' + Buf.Values['FileName'],fmCreate);rn AThread.Connection.ReadStream(FStream, StrToInt(Buf.Values['Size']), False);rnrn mmoLog.Lines.Add(Buf.Text);rn[/code]rnrn[code=Delphi(Pascal)]rn//发送代码rn sFileName := RightPartTwo(sFileNames[i], '\');rn FStream := TFileStream.Create(sFileNames[i], fmOpenRead);rn Insert(frmMain.mmoLog.Lines.Count, FRequest.Text);rn FResponse.Clear;rn FResponse.Add('[Response]');rn FResponse.Add('Command=SaveData');rn FResponse.Add('FileName=' + sFileName);rn FResponse.Add('Size=' + IntToStr(FStream.Size));rn FResponse.Add('Result=OK');rn SendResponse;rnrn FClient.WriteStream(FStream, True, False, FStream.Size);rn FStream.Free;rnrnprocedure TClientThread.SendResponse;rnvarrn Len: Integer;rn Stream: TStringStream;rnbeginrn Stream := TStringStream.Create('');rn Len := Length(FResponse.Text);rn Len := htons(Len);rn Stream.WriteBuffer(Len, SizeOf(Len));rn Stream.WriteString(FResponse.Text);rn FClient.WriteStream(Stream);rn Stream.Free;rnend; rn[/code]rnrn请问这样的接受/发送代码有没有问题呢?rnrn执行到我注释的地方就不往下执行了rn
cb6+indy10环境下idtcpclient的问题
在<em>idtcpclient</em>连接一个无法连上的服务器的过程中,Office不能运行。有没有人遇到过这个问题,应该怎么解决?
IdTCPClient如何接收数据
IdTCPClient如何自动接收服务端(硬件设备)发来的数据?怎样实现啊,最好能给出代码!
IdTCPServer,IdTCPClient问题
现在求用IdTCPServer,IdTCPClient做的上传,下载文件的客户端,服务端代码,重谢rn
idTcpServer与众多idTcpClient
互通消息时,会不会想电话串线一样,发生混乱?rn不是说indy封装了多线程吗?
idtcpclient接受和发送问题
我用下面这段程序向服务器发送数据,连续发送几次后会发生整个软件未响应,或者报错内存错误问题,我断点跟踪时候程序会自动把错误地方定义到我的接受程序,bytheway我是用一个timer接受数据的。。,此外请问<em>idtcpclient</em>接受线程怎么写啊 我是个纯新手。。求一段<em>idtcpclient</em>线程程序,我自己写的线程根本不好使,接受不到数据,全部都是16进制发送和接受rn[code=c]rnvoid __fastcall TfmReadMeter::BitBtn2Click(TObject *Sender)rn ADOQuery1->First();rn for(int i =0;iRecordCount;i++)rn tcpReadMeter(ADOQuery1->FieldByName("表号")->AsString.Trim(),"ResidentMeterRead");//调用下面的函数rn ADOQuery1->Next();rn rnrnvoid __fastcall TfmReadMeter::tcpReadMeter(AnsiString MeterAddress,AnsiString TABLE)//tcp读表函数rnrn if(IdTCPClient1->Connected()==false)rn IdTCPClient1->Host="192.168.1.100";rn IdTCPClient1->Port=32001;rn IdTCPClient1->Connect();rn rn unsigned short crc_value;//存放CRC检验结果rn TADOQuery *pMeterReadCard = new TADOQuery(Application);rn pMeterReadCard->Connection=fmMain->ADOConnection1;rn pMeterReadCard->SQL->Clear();rn pMeterReadCard->SQL->Add("select DTUNumber from ylt."+TABLE+" where MeterNumber = '"+MeterAddress+"'");rn pMeterReadCard->Open();rn AnsiString CardNo = pMeterReadCard->FieldByName("DTUNumber")->AsString;//与表号对应的采集器编号rn pMeterReadCard->Close();rn delete pMeterReadCard;rn TADOQuery * pMeterReadChannel = new TADOQuery(Application);rn pMeterReadChannel->Connection=fmMain->ADOConnection1;rn pMeterReadChannel->SQL->Clear();rn pMeterReadChannel->SQL->Add("select DTUChannel from ylt."+TABLE+" where MeterNumber = '"+MeterAddress+"'");rn pMeterReadChannel->Open();rn AnsiString ChannelNo = pMeterReadChannel->FieldByName("DTUChannel")->AsString;//与表号对应的通道号rn pMeterReadChannel->Close();rn delete pMeterReadChannel;rn byte comm[39]; //发送数据数组rn comm[0] = 0x0A;rn comm[1] = 0x0D;rn comm[2] = 0x01;rn comm[3] = 0x33;rn comm[4] = 0xAF;rn comm[5] = 0xBF;rn comm[6] = 0xCF;rn comm[7] = 0xDF;rn comm[8] = 0x01;rn comm[9] = StrToInt("0x"+CardNo.SubString(1,2));rn comm[10]= StrToInt("0x"+CardNo.SubString(3,2));rn comm[11]= 0x00;rn comm[12]= 0x18;rn comm[13]= 0xFE;rn comm[14]= 0xFE;rn comm[15]= 0x68;rn comm[16]= 0x20;rn comm[17]= StrToInt("0x"+MeterAddress.SubString(13,2));rn comm[18]= StrToInt("0x"+MeterAddress.SubString(11,2));rn comm[19]= StrToInt("0x"+MeterAddress.SubString(9,2));rn comm[20]= StrToInt("0x"+MeterAddress.SubString(7,2));rn comm[21]= StrToInt("0x"+MeterAddress.SubString(5,2));rn comm[22]= StrToInt("0x"+MeterAddress.SubString(3,2));rn comm[23]= StrToInt("0x"+MeterAddress.SubString(1,2));rn comm[24]= 0x01;rn comm[25]= 0x03;rn comm[26]= 0x90;rn comm[27]= 0x1F;rn comm[28]= 0x01;rn comm[29]= 0x00;rn comm[30]= 0x16;rn crc_value=CRC16(comm+8,23); //进行CRC检验rn comm[31]= crc_value%256;rn comm[32]= crc_value/256;rn comm[33]= 0xFA;rn comm[34]= 0xFB;rn comm[35]= 0xFC;rn comm[36]= 0xFD;rn comm[37]= 0x0B;rn comm[38]= 0x0C;rn for(int i=0;iIOHandler->Write(comm[i]);rn rn DWORD Start = GetTickCount();rn while(GetTickCount()-Start < 1000*10) //等3秒rn Application->ProcessMessages();//保证在延时期间程序可以相应oncomm事件rn rn IdTCPClient1->Disconnect();rnrn//---------------------------------------------------------------------------rnvoid __fastcall TfmReadMeter::Timer1Timer(TObject *Sender)rnrn int Recive_Data[77];rn //-------------------------------------------------rn if(IdTCPClient1->Connected()==true)rn while (!IdTCPClient1->IOHandler->InputBufferIsEmpty())rn rn Recive_Data[i]= IdTCPClient1->IOHandler->ReadByte();rn i++;rn rn if((Recive_Data[0]==0xAF)&&(Recive_Data[1]==0xBF)&&//判断是否接受到了DTU返回数据头和尾rn (Recive_Data[2]==0xCF)&&(Recive_Data[3]==0xDF)&& //如果判断数据为DTU返回数据,则返回给PC客户端rn (Recive_Data[i-1]==0xFD)&&(Recive_Data[i-2]==0xFC)&&rn (Recive_Data[i-3]==0xFB)&&(Recive_Data[i-4]==0xFA))rn Timer1->Enabled=false;rn //------解析数据---------------------------------rn AnsiString Meter_ID_H;rn AnsiString Meter_ID_L;rn AnsiString Meter_ID;rn AnsiString Now_Heat;rn AnsiString Now_Flow;rn AnsiString Cum_Flow;rn AnsiString In_Temp;rn AnsiString Out_Temp;rn AnsiString Cum_WorkingTime;rn AnsiString differentTemp;rn Meter_ID_H=AddZero(BCD_(Recive_Data[19]))+AddZero(BCD_(Recive_Data[18]))+AddZero(BCD_(Recive_Data[17]));rn Meter_ID_L=AddZero(BCD_(Recive_Data[16]))+AddZero(BCD_(Recive_Data[15]))+AddZero(BCD_(Recive_Data[14]))+AddZero(BCD_(Recive_Data[13]));rn Meter_ID= Meter_ID_H+ Meter_ID_L;rn Now_Heat=IntToStr((BCD_(Recive_Data[32]))+(BCD_(Recive_Data[33]))*100+(BCD_(Recive_Data[34]))*10000)+'.'+(BCD_(Recive_Data[31]));rn Now_Flow=IntToStr((BCD_(Recive_Data[44]))*100)+IntToStr((BCD_(Recive_Data[43])))+'.'+IntToStr((BCD_(Recive_Data[42]))+(BCD_(Recive_Data[41])/100));rn Cum_Flow=IntToStr((BCD_(Recive_Data[49]))*10000)+IntToStr((BCD_(Recive_Data[48]))*100)+IntToStr((BCD_(Recive_Data[47])))+'.'+IntToStr((BCD_(Recive_Data[46])));rn In_Temp=IntToStr((BCD_(Recive_Data[52]))*100+(BCD_(Recive_Data[51])))+'.'+IntToStr(BCD_(Recive_Data[50])); rn Out_Temp=IntToStr((BCD_(Recive_Data[55]))*100+(BCD_(Recive_Data[54])))+'.'+IntToStr(BCD_(Recive_Data[53])); rn Cum_WorkingTime=IntToStr((BCD_(Recive_Data[58]))*10000+(BCD_(Recive_Data[57]))*100+BCD_(Recive_Data[56])) ; rn float fdifferentT = StrToFloat(In_Temp)-StrToFloat(Out_Temp);rn differentTemp= FormatFloat("0.00",fdifferentT); rn AnsiString year = IntToStr(BCD_(Recive_Data[59])*100+ BCD_(Recive_Data[60]));rn AnsiString month = IntToStr(BCD_(Recive_Data[61])); //月rn AnsiString day = IntToStr(BCD_(Recive_Data[62])); //日rn AnsiString hour = IntToStr(BCD_(Recive_Data[63])); //时rn AnsiString minute = IntToStr(BCD_(Recive_Data[64]));//分rn AnsiString second = IntToStr(BCD_(Recive_Data[65])); //秒rn AnsiString Read_Time =year + "-" + month + "-" + day + " " + hour + ":" +minute + ":" + second;rn AnsiString BatteryState;rn if(Recive_Data[66]==0x04) //电池是否欠压rn BatteryState="欠压";rn rn elsern BatteryState="正常";rn rn //---------解析完成------------------------------rn AnsiString stry;rn AnsiString strm;rn AnsiString strd;rn AnsiString strh;rn AnsiString strmin;rn AnsiString strs;rn AnsiString strsystime;rn SYSTEMTIME *GT=new SYSTEMTIME; // 系统时间变量rn GetLocalTime(GT); //提取本地时间rn stry = AnsiString(GT->wYear);rn strm = AnsiString(GT->wMonth);rn strd = AnsiString(GT->wDay);rn strh = AnsiString(GT->wHour);rn strmin = AnsiString(GT->wMinute);rn strs = AnsiString(GT->wSecond);rn strsystime = stry + "/" + strm + "/" + strd + " " + strh + ":" +strmin + ":" + strs; //system time in strsystimern AnsiString mysql;rn TADOQuery *Query = new TADOQuery(this);rn Query->Connection=fmMain->ADOConnection1;rn Query->SQL->Clear();rn Query->SQL->Add("select MeterNumber,LastRead from ylt.ResidentMeterRead where MeterNumber='"+Meter_ID+"'");rn Query->Open();rn float Heat=StrToFloat(Now_Heat)-StrToFloat(Query->FieldByName("LastRead")->AsString);rn AnsiString HeatDiffence=FormatFloat("0.00",Heat);rn if(CheckBox4->Checked==true)rn mysql="UPDATE ylt.ResidentMeterRead SET CurrentRead = '"+Now_Heat+"',InstantaneousFlow ='";rn mysql+=Now_Flow+"',CumulativeFlow ='"+Cum_Flow+"',InletTemperature ='"+In_Temp+"',EffluentTemperature='";rn mysql+=Out_Temp+"',ReadMeterMark='成功',Heat='"+HeatDiffence+"',BatteryState='"+BatteryState+"',Runtime ='";rn mysql+=Cum_WorkingTime+"',ReadingDate='"+strsystime+"'";rn mysql+=" WHERE MeterNumber = '"+Meter_ID+"'";rn rn elsern mysql="UPDATE ylt.ResidentMeterReadTemple SET CurrentRead = '"+Now_Heat+"',InstantaneousFlow ='";rn mysql+=Now_Flow+"',CumulativeFlow ='"+Cum_Flow+"',InletTemperature ='"+In_Temp+"',EffluentTemperature='";rn mysql+=Out_Temp+"',ReadMeterMark='成功',Heat='"+HeatDiffence+"',BatteryState='"+BatteryState+"',Runtime ='";rn mysql+=Cum_WorkingTime+"',ReadingDate='"+strsystime+"'";rn mysql+=" WHERE MeterNumber = '"+Meter_ID+"'";rn rn Query->Close();rn Query->SQL->Clear();rn Query->SQL->Add(mysql); //将数据更新到数据库中rn Query->ExecSQL();rn delete Query;rn ReadSucceed=true;rn i=0;rn for(int j =0;jEnabled=true;rn rn rn //-----------解析程序结束--------------------------------rnrnrn[/code]
idTcpClient怎样接收数据?
因为我是用idTcpServer控件不定时的发送长度的字符串给idTcpClient,这些字符串分很多类型,用自己定义的格式来标识,但是现在idTcpClient不知道在那里接收,用demo的中的timer控件来接收吗?rn但是会出现这样的问题,我怎么区分这些不同类型的数据?
idtcpserver/idtcpclient双向文件传输
本实例可实现idtcpserver/<em>idtcpclient</em>双向文件传输,消息发送,并可实现更新升级功能,希望给有需有朋友一点帮助吧 有段时间没上CSDN了,才发现之前自己上传的资料传错了,对下了资源的朋友表示歉意。重新再传一次。
Delphi7【IdTCPClient】问题!!!
Form1上放有IdTCPClient1和IdAntiFreeze1两个控件,知道互联网上的远程服务器IP和端口,为什么连接不到?rn[code=Delphi(Pascal)]rnprocedure TForm1.Button1Click(Sender: TObject); //[连接]按钮事件rnbeginrn IdTCPClient1.Host:=Edit1.Text;//远程服务器iprn IdTCPClient1.Port:=StrToInt(Edit2.Text);//远程服务器端口rnrn Memo2.Lines.Add('正在连接到 '+Edit1.Text+'...');rnrn with IdTCPClient1 do beginrn tryrn Connect(5000);rn tryrn Memo2.Lines.Add(ReadLn());rn Button1.Enabled:=False;rn exceptrn Memo2.Lines.Add('远程主机无响应!');rn IdTCPClient1.Disconnect;rn end;rn exceptrn Memo2.Lines.Add('无法建立到 '+Edit1.Text+' 的连接!');rn end; rn end;rnend;rn[/code]rnrn自己用IdTCPServer写的一个服务端程序,在局域网内测试,用IdTCPClient1 可以连接到服务端,并且可以发送数据到服务端rnrn为什么广域网上的服务器连接不到?IdTCPClient1 有什么属性要特别设置的吗?rnrn广域网的服务器端不知道开发工具和控件,只知道IP和开放的端口。网络是通的,ping IP没问题。并且用ClientSocket1控件写的客户端可以连接到这个远程服务器。rnrnrnrn
Indy10的IdTCPServer和IdTCPClient
我正做一个局域网的c/s数据库系统.rn若干客户端和一个服务器.服务器需要监测各个客户端的情况,例如:客户端是否启动,关闭电脑,发送信息等等.rn原来没有做过这一块,请问是不是用Indy10的IdTCPServer和IdTCPClient来实现?最好给我一个例程看看.indy10的demo好像没有我要的功能.谢谢
idtcpclient收信息问题!
<em>idtcpclient</em>.readl() 怎么接受``我用一个线程来接受``怎么判断他是否真正接受到信息``就是IDTCPSERVER没有给他发信息的情况下``他接受了```这样一断的接收会造成消息堵塞```有什么好办法来判断是否有idtcpserver发来的信息 在接收呢
IdTCPClient传输文件出错
unit Unit1;rnrninterfacernrnusesrn Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,rn Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,rn IdTCPClient, ComCtrls;rnrntypern TForm1 = class(TForm)rn OpenDialog1: TOpenDialog;rn IdTCPClient1: TIdTCPClient;rn Button1: TButton;rn edtFileName: TEdit;rn edtAddress: TEdit;rn Button2: TButton;rn ProgressBar1: TProgressBar;rn StatusBar1: TStatusBar;rn Label2: TLabel;rn procedure Button1Click(Sender: TObject);rn procedure Button2Click(Sender: TObject);rn privatern Private declarations rn publicrn Public declarations rn end;rnrnvarrn Form1: TForm1;rnrnimplementationrnrn$R *.dfmrnrnprocedure TForm1.Button1Click(Sender: TObject);rnbeginrn OpenDialog1.Execute;rn edtFileName.Text:=OpenDialog1.FileNamernend;rnrnprocedure TForm1.Button2Click(Sender: TObject);rnvarrn iFileHandle:integer;rn iFileLen,cnt:integer;rn buf:array[0..4096] of byte;rnbeginrnif (edtAddress.Text<>'')and (edtFileName.Text<>'') thenrnbeginrn IdTCPClient1.Host:=edtAddress.Text;rn IdTCPClient1.Port:=9925;rn tryrn IdTCPClient1.Connect(5000);rn exceptrn StatusBar1.Panels[0].Text:='连接接受方失败!';rn exit;rn end;rn if IdTCPClient1.Connected thenrn beginrn iFileHandle:=FileOpen(edtFileName.Text,fmOpenRead);rn iFileLen:=FileSeek(iFileHandle,0,2);rn FileSeek(iFileHandle,0,0);rn ProgressBar1.Max:=iFileLen;rn ProgressBar1.Position := 0;rn IdTCPClient1.WriteLn(ExtractFileName(edtFileName.Text)+'|'+IntToStr(iFileLen));rn while true dorn beginrn Application.ProcessMessages;rn cnt:=FileRead(iFileHandle,buf,4096);rn IdTCPClient1.WriteBuffer(buf,cnt);rn IdTCPClient1.WriteInteger(cnt);rn ProgressBar1.Position:=ProgressBar1.Position + cnt;rn StatusBar1.Panels[0].Text:='正在传送文件...';rn if cnt);rnrnend;rnrnend.rnrnrnrn错误:list index out of bounds(0)
IDTcpClient传输示例
IDTCPClient传输文件的示例。可以进行文件的传输。具体参数自己研究下吧。忘记写了。下次一定记得!
IdTCPClient接收数据问题
我做的东西是用IdTCPClient先发送命令(自定义的)到服务器端,服务器端根据命令返回给客户端一些数据。代码如下:rn with IdTCPClient1 dorn beginrn Writeln('Query');rn Writeln(Edt_jh.Text);//发送的两个查询条件rn Writeln(DateToStr(Time_sgrq.date));rnrn j:=ReadInteger;//服务器发送回来的信息条数rn if j<>1 thenrn beginrn for i:=0 to j-1 dorn beginrn ReadLn(Str_Filename) ; //运行到这得时候总说Connection Closed Gracefullyrn Slst_file.Append(Str_Filename);rn endrn endrn elsern Slst_file.Append('NULL');rn这是什么问题呢?是否是接收的时间不对,服务器没有发送完数据,客户端就接收了吗?
IDTCPClient下载文件? 传输问题
我写了一个基于IDTCPClient文件的程序!现在能传输!但是传输出来的文件有点不对!现在我将代码贴出来!比较急!解决好还可以加分!rnTIdTCPClient端rnprocedure TRemoteControlFrm.TheFileDownLoad;rnvarrn DlFm: TSingleDLoadFm;rn TheDir: string;rnbeginrn if ListView1.Selected = nil thenrn beginrn Showmessage('请选择要下载的文件');rn exit;rn end;rn TheDir := 'C:\';rn if SelectDirectory('下载到目录:', 'Desktop',TheDir ) thenrn beginrn Application.CreateForm(TSingleDLoadFm, DlFm);rn DlFm.FileNameText.text := ListView1.Selected.Caption;rn DlFm.DownLoadDir.text := TheDir;rn DlFm.SrcouceDir.text := RemotePath.Text;rn DlFm.IP.Text:=IP.Caption;rn DlFm.Show;rn end;rnend;rnrnunit SingleDLoadUnit;rnrninterfacernrnusesrn Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,rn Dialogs, StdCtrls, ComCtrls, ExtCtrls, Buttons, IdBaseComponent,rn IdComponent, IdTCPConnection, IdTCPClient, IdGlobal, ShellAPI;rnrntypern TSingleDLoadFm = class(TForm)rn Animate1: TAnimate;rn Panel1: TPanel;rn CheckBox1: TCheckBox;rn BitBtn2: TBitBtn;rn BitBtn1: TBitBtn;rn Bevel1: TBevel;rn ProgressBar1: TProgressBar;rn BitBtn3: TBitBtn;rn DownLoadTcp: TIdTCPClient;rn Label4: TLabel;rn Label5: TLabel;rn Label6: TLabel;rn FileNameText: TEdit;rn DownLoadDir: TEdit;rn SrcouceDir: TEdit;rn SaveDialog1: TSaveDialog;rn IP: TEdit;rn procedure BitBtn1Click(Sender: TObject);rn procedure BitBtn2Click(Sender: TObject);rn procedure FormClose(Sender: TObject; var Action: TCloseAction);rn procedure FormCreate(Sender: TObject);rn procedure BitBtn3Click(Sender: TObject);rn procedure DownLoadTcpWorkBegin(Sender: TObject; AWorkMode: TWorkMode;rn const AWorkCountMax: Integer);rn procedure DownLoadTcpWorkEnd(Sender: TObject; AWorkMode: TWorkMode);rn procedure DownLoadTcpWork(Sender: TObject; AWorkMode: TWorkMode;rn const AWorkCount: Integer);rn procedure SrcouceDirMouseMove(Sender: TObject; Shift: TShiftState; X,rn Y: Integer);rn privatern Private declarations rn TmpFName: string;rn AlreadyReadLen, ReadFileLen: integer;rn DownStream, ExistStream: TMemoryStream;rn publicrn Public declarations rn end;rnrnimplementationrnrnrnvarrn SingleDLoadFm: TSingleDLoadFm;rnrn $R *.dfmrnrnprocedure TSingleDLoadFm.BitBtn1Click(Sender: TObject);rnvarrn RetStr: string;rn iReturn: integer;rn SaveFStream: TFileStream;rnbeginrn begin //============================================================rn Animate1.Active := True;rn Bitbtn1.Enabled := False;rn try //发送下载的文件rn DownLoadTcp.Write('文件下载' + EOL); //1-------SendfileCMDrn DownLoadTcp.Write(SrcouceDir.Text + FileNameText.Text + EOL); //2-------SendfileNamern exceptrn DownLoadTcp.Disconnect;rn Animate1.Active := False;rn beep;rn Self.Caption := '提示:网络信息发送失败!';rn exit;rn end;rn TmpFName := DownLoadDir.Text + FileNameText.Text;rn //================================文件接续rn tryrn if FileExists(TmpFName) thenrn beginrn SaveFStream := TFileStream.Create(TmpFName, fmOpenReadWrite);rn AlreadyReadLen := SaveFStream.Size;rn endrn elsern beginrn SaveFStream := TFileStream.Create(TmpFName, fmCreate);rn AlreadyReadLen := 0;rn end;rn exceptrn beep;rn beep;rn Self.Caption := '错误提示:请重新指定下载目录!';rn exit;rn end;rn //===============================rn tryrn DownLoadTcp.WriteInteger(AlreadyReadLen); //---send filePos文件位置rn exceptrn SaveFStream.free;rn Animate1.Active := False;rn DownLoadTcp.Disconnect;rn Self.Caption := '错误提示:网络信息发送失败!';rn exit;rn end;rnrn tryrn //iReturn := DownLoadTcp.ReadInteger;rn RetStr := DownloadTcp.ReadLn(EOL); //OKrn exceptrn SaveFStream.free;rn DownLoadTcp.Disconnect;rn Animate1.Active := False;rn Self.Caption := '错误提示:远程网络断开,接收失败!';rn exit;rn end;rnrn if RetStr = 'OK' then //------------------------读取接收标志rn begin //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^rn //读数据------------------------开始-----rn tryrn ReadFileLen := DownLoadTcp.ReadInteger; //文件大小rn exceptrn SaveFStream.free;rn DownLoadTcp.Disconnect;rn Animate1.Active := False;rn Self.Caption := '错误提示:远程网络断开,接收失败!';rn exit;rn end;rn SaveFStream.Position := SaveFStream.Size;rn ProgressBar1.Max := ReadFileLen + AlreadyReadLen;rn ProgressBar1.Position := 0;rn tryrn DownLoadTcp.ReadStream(SaveFStream, ReadFileLen);rn exceptrn SaveFStream.Free;rn Animate1.Active := False;rn DownLoadTcp.Disconnect;rn Self.Caption := '错误提示:远程网络断开,接收失败!';rn exit;rn end;rn SaveFStream.free; //下载成功rn Bitbtn3.Enabled := True;rn beep;rn Self.Caption := '下载完毕! 共:' + IntToStr(ProgressBar1.Max) + '字节';rn ProgressBar1.Position := ProgressBar1.Max;rn Sleep(100);rn DownLoadTcp.Disconnect;rn Animate1.Active := False;rn if checkBox1.Checked then Close;rn exit;rn end; //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^rn DownLoadTcp.Disconnect; //rn Self.Caption := '反馈提示:远程文件定位失败,连接断开!';rn Animate1.Active := False;rn Bitbtn1.Enabled := True;rn exit;rn end; //============================================================rn beep;rn Self.Caption := '提示:网络连接失败!';rnend;rnrnprocedure TSingleDLoadFm.BitBtn2Click(Sender: TObject);rnbeginrn Animate1.Active := false;rn DownLoadTcp.Disconnect;rn close;rnend;rnrnprocedure TSingleDLoadFm.FormClose(Sender: TObject;rn var Action: TCloseAction);rnbeginrn DownLoadTcp.Disconnect;rn DownStream.Free;rn ExistStream.Free;rnend;rnrnprocedure TSingleDLoadFm.FormCreate(Sender: TObject);rnbeginrn ProgressBar1.Position := 0;rn DownStream := TMemoryStream.Create;rn ExistStream := TMemoryStream.Create;rn DownLoadTcp.Host:=Ip.Text;rn DownLoadTcp.Port:=6000;rn if not DownLoadTcp.Connected then DownLoadTcp.Connect;rnend;rnrnprocedure TSingleDLoadFm.BitBtn3Click(Sender: TObject);rnbeginrn ShellExecute(Application.Handle, 'OPEN',rn PChar(TmpFName), '', '', SW_SHOWNORMAL);rn Close;rnend;rnrnprocedure TSingleDLoadFm.DownLoadTcpWorkBegin(Sender: TObject;rn AWorkMode: TWorkMode; const AWorkCountMax: Integer);rnbeginrn ProgressBar1.Position := 0;rn ProgressBar1.Max := AlreadyReadLen + AWorkCountMax;rnend;rnrnprocedure TSingleDLoadFm.DownLoadTcpWorkEnd(Sender: TObject;rn AWorkMode: TWorkMode);rnbeginrn Self.Caption := '下载完毕!共下载文件' + IntToStr(ReadFileLen + AlreadyReadLen)rn + '字节';rnend;rnrnprocedure TSingleDLoadFm.DownLoadTcpWork(Sender: TObject;rn AWorkMode: TWorkMode; const AWorkCount: Integer);rnvarrn ThePos: int64;rnbeginrn ThePos := ProgressBar1.Position;rn ProgressBar1.Position := AlreadyReadLen + AWorkCount;rn Self.Caption := '正在下载:' +rn IntToStr(ThePos * 100 div ProgressBar1.Max) + '%';rnend;rnrnprocedure TSingleDLoadFm.SrcouceDirMouseMove(Sender: TObject;rn Shift: TShiftState; X, Y: Integer);rnbeginrn (Sender as TEdit).Hint := (Sender as TEdit).Text;rnend;rnrnend.
Delphi 基于IdTcpServer和IdTcpClient通讯实例源码.rar
<em>delphi</em> 基于IdTcpServer和IdTcpClient的通讯实例,包括客户端和服务端,   procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread);   begin    Memo1.Lines.Text:='来自主机' AThread.Connection.Socket.Binding.PeerIP '的连接请求已被接纳';    AThread.Connection.WriteLn('Ariel:欢迎连接本服务器,竭诚为您服务');   end;   procedure TForm1.IdTCPServer1Disconnect(AThread: TIdPeerThread);   begin   Memo1.Lines.Text:='来自主机' AThread.Connection.Socket.Binding.PeerIP '已断开连接';   StatusBar1.Panels[0].Text:='连接已断开';   end;   procedure TForm1.IdTCPServer1ListenException(AThread: TIdListenerThread;    AException: Exception);   begin   StatusBar1.Panels[1].Text:='正在连接.....';   end;
IDTCPSever跟IDTCPClient连接后能得到IDTCPClient的IP吗?
IDTCPSever跟IDTCPClient连接后能得到IDTCPClient的IP吗????
DELPHI的Indy Clients上的IdTCPClient控件如何接收数据????
它似乎没有事件可以用来接收数据的?rn
一组idtcpclient和idtcpserver文件上传
批量多用户的一组上传,改写一下可以同时写成多用户批量下载的,下载就吧传了,实在需要可以留言找我要,或者这个173120019 这个群里留言要。
idTCPSever和idTcpCLIENT的几点疑问
想做个局域网传输文件东东,但对TCP这一块不太了解,有两点疑问,如下:rn1.假设我有一个服务端,可以支持多个客户端同时传输文件吗?rn2.IdSchedulerOfThreadDefaul里面可以设置线程数,是不是说明不用做成多线程也可以?
关于idtcpclient控件
我用了<em>idtcpclient</em>控件现在想把它设成TCP_NODELAY,要用setsockopt函数应该怎么用阿rn主要是第一个参数rn怎么获得<em>idtcpclient</em>控件的socket套接字啊
idtcpclient的disconnect的问题
调用<em>idtcpclient</em>1.Disconnect;rnrnprocedure TForm1.IdTCPServer1Disconnect(AThread: TIdPeerThread);rnbeginrnmemo1.Lines.Add('断开连接');rnend;rn怎么触发不了啊,怎样判断客户端断开连接了
IdTCPClient 和IdTCPServer编译出错
在窗体类文件中编译没有问题rn在非窗体类文件内加入相关头文件,或include含IdTCPClient 和IdTCPServer的窗体文件rn会报错,winsock.h winsock2.h中变量重复定义rn这个是为什么rn我在windows.h中去掉#include 可以编译通过,就是不知会不会有什么问题rnrn请高手给解答一下,谢谢
IdTCPServer和IdTCPClient传输数据的例子
简单一点的例子rn传输 packed recordrn<em>delphi</em>自带的demo看不懂rn哪位大侠能发哥例子给我学习学习rn或许再简单一点,只要能实现一端发 一端收就OK
求救,idTCPClient无法接收数据
我用idTCPClient做客户端,连接单片机服务器,idTCPClient只能发送数据却收不到数据,用网络调试器做服务器也接收不到数据。但我用idTCPServer做服务器端就是好的,XDJM们帮帮忙,我单片机不能用idTCPServer做服务器啊,但基于项目兼容性,客户端又必须用idTCPClient。rn问题详述下:rnidTCPClient发给其他服务器能收到。rn其他服务器发给idTCPClient的数据收不到。非阻塞方式。
关于IdTcpServer与IdTcpClient编程
procedure TForm1.serverConnect(AThread: TIdPeerThread);rn其中AThread具体是指那个线程?rnAThread.Connection这个Connection指的又是什么?rnAThread.Connection.Socket这个Socket指的是客户端的Socket还是服务器端的Socket?rnAThread.LockList的作用是什么?
还是idTCPServer和idTCPClient的问题
还是idTCPServer和idTCPClient的问题rnrn我的问题是这样的rnrn我要写一个类似于网吧管理系统的系统rnrn网上虽然有很多这样的程序,我想自己写一个类似的,可以在这与的过程中学到很多东西rnrn服务器端我用idTCPServer,客户机端我用idTCPServerrn客户机定时(例如60秒)向服务器发送一个连接包,然后等待服务器发回来的连接包,如果没有收到服务器发回来的连接包客户机就重新连接服务器,以确保客户机与服务器随时保持连接状态。rnrn但接着问题就来了,因这是一个控制程序,控制命令都是从服务器上发出来的,所以服务器端要用到rnTIdPeerThread(Client.Thread).Connection.WriteBuffer(pack,SizeOf(pack),true);rn//rnrn就是因为客户机要接受服务器的命令,所以要在客户机端建立一个线程类,功能似于indy Demo里的Chat的那个Timer要定时接收从服务器发过来的包rnFormMain.IdClient.ReadBuffer(pack,SizeOf(pack));rnrn也下是因为idTCPClient要定时接收服务器发回来的连接包rn如果连接包和命令包同时发过来,就会产生冲突,在Server端我不知道怎么样的同步rnrn请大家指教!rn
数据传输问题 idtcpserver与idtcpclient
数据传输时,为什么工作时间长了,客户端就与服务器连接自动断开了,大约10个小时就断了rnrn我这里的情况这样的,现在有10多个客户端,每个客户端20毫秒传一次数据.一个客户端10秒内传输100个数据包.rnrn现在我想知道为什么会出现连接断开的情况,产生这样的情况主要原因是什么
IdTCPClient 资源泄漏
this->IdTCPClient1->Host = "192.168.0.121";rn this->IdTCPClient1->Port = 6002;rnrn tryrn rn this->IdTCPClient1->Connect(1000);rn rn catch(const EIdAlreadyConnected& )rn rn rn catch(...)rn rn rnrn 上面代码,当this->IdTCPClient1->Connect(1000);连接失败(故意不开服务端,rn就可以。)然后异常,然后被捕获(在IDE环境,会弹出异常提示窗口,不必在意)。rnrn 通过“Windows任务管理器” (Ctrl+Alt+Del,调出),观察,每当上面代码运行一遍,rn程序所占用的 “句柄数”,就会多出1来:第1次可能会多出好几个,正常的,以后执行时rn(一次次按Button),就会稳步增1 (偶尔也会多出5或4,但会很快吐还4,3个句柄).rnrn =====================rn Indy 9.0.17 或 Indy 9.0.18. C++Builder 6,打了补丁4.rn 没有Delphi环境。但我想这是Indy自身的事。rn =====================rnrn 虽然只是吃了一个句柄(Handle)。但是,我写的是服务,连续跑了4天,就吃了4万多个句柄。rn句柄是OS资源呢。。。惨。哪位高人有Delphi,帮忙跟踪一下Indy的源代码,告诉我具体吃掉rn那个句柄的事,是在哪里?rnrn 我做了测试。delete 掉 IdTCPClient1,这些句柄也不会放出,可见这个句柄应是成了无主rn的了。rnrn 查了一下Indy的源代码:rnrn//IdTCPClient.pasrnprocedure TIdTCPClient.Connect(const ATimeout: Integer = IdTimeoutDefault);rnbeginrn // Do not call Connected here, it will call CheckDisconnectrn if IOHandler <> nil then begin rn if IOHandler.Connected then beginrn raise EIdAlreadyConnected.Create(RSAlreadyConnected);rn end;rn end else beginrn IOHandler := TIdIOHandlerSocket.Create(Self);rn IOHandler.OnStatus := OnStatus;rn FFreeIOHandlerOnDisconnect := True;rn end;rnrn tryrn IOHandler.Open;rn ResetConnection;rnrn // Socks supportrn IOHandler.ConnectClient(Host, Port, BoundIP, BoundPort, BoundPortMin, BoundPortMax, ATimeout);rnrn if Assigned(Intercept) then beginrn Intercept.Connect(Self);rn end;rn DoStatus(hsConnected, [Host]);rn DoOnConnected;rn exceptrn // This will free IOHandlerrn DisconnectSocket;rn raise;rn end;rnend;rnrn因为IdTCPClient1 没有被delete掉,所以IOHandler只Create 了一回。应不是它的事。rn由于故意让它连接不上,来导致抛出异常,所以我想是不是DisconnectSocket这个过程rn里没有释放什么东西?查找源代码,找到:rnrnprocedure TIdSocketHandle.CloseSocket(const AResetLocal: boolean = True);rnbeginrn if HandleAllocated then beginrn // Must be first, closing socket will trigger some errors, and theyrn // may then check (in other threads) Connected, which checks this.rn FHandleAllocated := False;rn GStack.WSShutdown(Handle, Id_SD_Default);rn // SO_LINGER is false - socket may take a little while to actually close after thisrn GStack.WSCloseSocket(Handle);rn end;rnend;rnrn会是WSShutdown 或 WSCloseSocket 的问题?大家帮忙看看。谢谢了。rn
IdTcpClient IdTcpServer 例程
IdTcpClient ,IdTcpServer 实现客户端和服务端的互发信息的例程
idtcpclient接收数据的问题
procedure MyTCPThread.Execute; rn var rn Count: Integer; rn P: PByte; rn s:array [0..255] of char; rn begin rn Synchronize (setflag); rn while (not Terminated) and IdTCPClient1.Connected do rn begin rn try rn str:=idTCPClient1.ReadLn();//当关闭主程序时,在这句出现错误,可是,我不知道该如何排除; rn Synchronize (tt); rn except rn showmessage('disconn'); rn idTCPClient1.Disconnect; rn break; rn end; rn end; rn end; rn //断开连接时rn <em>idtcpclient</em>1.disconnect;rn 时出错,not connected,怎么排出啊
delphi7的Idtcpserver与Idtcpclient 和使用?
<em>delphi</em>7的Idtcpserver与Idtcpclient 如何使用。知道的请进?
Indy的IdTCPClient怎么用的?
连接上服务器后,接收到服务器消息后会触发什么事件?rn怎么接收服务器数据?rn我就想实现一个简单的TCP通信的客户端的代码,哪位能提供一下,谢谢!
IdTCPClient通讯一问
我用IdTCPClient->ReadLn(“#",10000)来读取数据,对方发送一个180K左右数据,从开头到“#”号的数据量约为5K左右,不知为什么,读到这一行便停住了,等等10秒到了时,单步发现收到的数据是空。请空怎么回事?有别的解决方法吗?如不用这个函数,别的哪个函数好,请赐教!谢谢!~
咨询一下idtcpclient的用法
因为服务器端走的是TCP,所以决定采用<em>idtcpclient</em>控件,主要想咨询以下几个问题rn1、因为indy控件是阻塞式,所以我想问一下<em>idtcpclient</em> 的发送和接收都是阻塞式,如果发送不成功,界面会卡死吗?我看了一下接收一般都放在线程里面了。rn2、我的流程是这样,client 先发送数据,然后过一段时间再主动去读服务器那边响应的数据,由于没有类似OnReceive事件,所以我要主动去读,请问一下这个发送数据和读数据这两个过程之间怎么样衔接控制最好呢?rn3、还有假设发生断网的情况,发送数据肯定会报错,可以做自动连接吗?当网络正常以后。rn谢谢,问题有点多,不好意思
一个IdTCPClient的奇怪问题
往服务器上发xml信息,代码如下rnprocedure TFrmMain.CyLogin;rnvarrnsXml:string;rnbuffer:array of Byte;rniSize:Integer;rnbeginrn sXml:=LoadXmlFile(ExtractFilePath(Application.ExeName)+'Login.xml');rn iSize:=Length(sXml);rn SetLength(buffer,iSize);rn Move(sXml[1],buffer[0],iSize);rnrn IdTCPClient1.WriteBuffer(buffer[0],iSize);rnend;rnrnIdTCPClient1是一个全局变量,程序需要不停的用上面的代码发送信息。当我把上面的代码放在主线程中,用一个循环发送时,一切正常。代码如下:rnvarrni:Integer;rnbeginrn for i:=1 to 1000 dorn beginrn CyLogin;rn end;rnend;rn但是当把以上代码放进线程中,就频繁出现socket error #0错误,本来以为是indy的问题,原来使用indy9,后来换成indy10.1.5 10.5.5 10.5.7 10.5.8都试过了,都是这样。不知怎么回事。
Delphi7 IdTcpClient 连接问题?
现在我有个 IdTcpClient 和 IdTcpServer 做的两个应用程序,一个客户端 一个服务端。rnrn如果是在本机和局域网上,这两个程序可以相互通信,现在我需要将客户端放置在远程电脑上,需要通过互联网进行访问! 但是客户端连接不上服务端了。rnrn在服务器上的 PORT=8123,在客户端使用这个端口和网络IP地址访问服务端,连接不上。rnrn请问,在互联网上使用,是不是要通过什么中间件来做桥才能连接都上还是我那里设置的不对。rnrn服务段代码:rn[code=Delphi(Pascal)]rn tcpServer.DefaultPort := sePort.Value;rn tcpServer.Active := true;rn[/code]rnrn客户端代码:rn[code=Delphi(Pascal)]rn if (edtServerIP.Text <> '') and (edtName.Text <> '') and (not bConnected) thenrn beginrn IdTCPClient.Host := edtServerIP.Text;rn IdTCPClient.Port := sePort.Value;rn tryrn IdTCPClient.Connect;rn stat1.Panels[0].Text := '已连接到服务器'+edtServerIP.Text+' 连接时间:'+DateTimeToStr(Now);rn exceptrn mmoMsg.Lines.Add('无法连接到服务器'+edtServerIP.Text+',请联系管理员!');rn end;rn endrn elsern beginrn if (edtServerIP.Text = '') or (edtName.Text = '') thenrn ShowMessage('您需要输入服务器地址和用户名称才能连接到服务器。');rn bConnected := False;rn end;rn[/code]rnrn求大神指点!
关于Idtcpclient和Idtcpserver
如何建立线程,使连接的客户IP都显示在listview中,rn还有如何使服务器向客户发送信息。rn各位大侠给个相关的例子也行,衷心谢谢!
怎样用IDTCPClient下载文件?
sever端:rn WriteLn('OK '+IntToStr(Fs.Size)); //发送文件大小rn OpenWriteBuffer;rn FS.Position:= 0;rn repeatrn Application.ProcessMessages;rn ct := Fs.Read(Fbuffer,4096);rn WriteBuffer(Fbuffer,ct);rn until (ct=0) or (not Connected);rn CloseWriteBuffer;rn FreeAndNil(Fs);rn Disconnect;rnrn方法1 :( 为什么出不来进度条呢??)rn client: rn rt := readln;rn Delete(rt,1,2); rn repeatrn Application.ProcessMessages;rn ReadStream(Fs,-1,true);rn ct := Fs.Size;rn self.Gauge1.Progress := ct;//下载进度rn until (not connected) or (ct >= StrToInt(rt));rnrn方法2:(这回有进度了,为什么总是到99%时报错socked disconnect gracefully)rn client:rn rt := readln;rn Delete(rt,1,2); rn repeatrn Application.ProcessMessages;rn readbuffer(Fbuffer,sizeof(Fbuffer));rn ct := sizeof(Fbuffer);rn self.Gauge1.Addprog(ct);//下载进度rn until (not connected) or (ct=0) or (Fs.size >= StrToInt(rt));rn
delphi 怎么做分类统计的grid
<em>delphi</em>中如何实现这样的报表 ,用Dbgrideh或者Dbgrid来实现,下面的是表格形式,我不知道在这里加表格rn----------------------------------------------------------------------------------------rn[b]小吃类[/b] [b]5[/b] [b]500[/b] rn----------------------------------------------------------------------------------------rn南瓜饼 2 200rn----------------------------------------------------------------------------------------rn麻花 3 300rn----------------------------------------------------------------------------------------rn[b]饮料类[/b] [b] 5[/b] [b]600[/b]rn----------------------------------------------------------------------------------------rn王老吉 2 200rn----------------------------------------------------------------------------------------rn雪碧 3 300rn----------------------------------------------------------------------------------------rn娃哈哈 1 100rn----------------------------------------------------------------------------------------rn
Pb能做到,delphi怎么做
看到Pb编的一个软件,主界面show出的form都出现任务栏,就好像是两个程序在运行一样。而<em>delphi</em>主界面show出的form缩小后在任务栏的上方,若任务栏是隐藏的,很容易将这个缩小的form遮住,不方便。请问有什么容易的方法实现这个功能。
delphi 中的两层是怎么做
up,最好,请高手说详细点,先谢谢!!!rn
delphi怎么做分页??急!!
各位大哥大姐rn 我要做一个录入的界面,但是要输入的内容很多,一页不够,,我想用分页来输入,请问<em>怎么做</em>?我的想法是这样的,在第一页做一个按钮,通过按钮链接到下一页,但是这样好像很麻烦!!有其他的控件吗?具体<em>怎么做</em>呢?
Delphi中联机帮助文档怎么做?
我用Delphi做了一个软件,现在想在这个软件主界面的帮助菜单里做一个联机的帮助系统,不知道<em>怎么做</em>?我已经在Word里写好了rtf格式的一个文档,然后试着用Microsoft Help Workshop这个软件进行编译,但是提示说我这个rtf格式的文档太大,无法打开,下一步不知道怎么解决?小弟先谢了.
怎么做可以在delphi调用的DLL?
请问哪位有这方面的例子,是否还要做转头文件之类的操作?可以发一个这方面的例子给我吗?rn我的邮箱xoenice@sina.com.cn
这东西能用delphi怎么做!!!
www.tcbgw.com/surdonrn哪有这样的DELPHI 源程序下载 谢谢!!! 如果你有空 帮我的话 嘻 帮我做一个rn谢谢
Delphi ADOQuery事务提交怎么做
ADOQuery.Close;rn ADOQuery.SQL.Clear;rn ADOQuery.SQL.text := 'insert into Client (C_name,C_pass,C_Phone,C_Address,C_BankNo,C_Time,C_Deposit)' +rn ' values(:ClientName,:pass,:Phone,:address,:bankNo,:Timer,:Deposit)'; //添加信息rn ADOQuery.Parameters.ParamByName('ClientName').value := Client.Text ; //给字段赋值rn ADOQuery.Parameters.ParamByName('pass').Value := trim(Pass.Text);rn ADOQuery.Parameters.ParamByName('Phone').Value := trim(PhoneNumber.Text);rn ADOQuery.Parameters.ParamByName('Address').Value := trim(Address.Text);rn ADOQuery.Parameters.ParamByName('BankNo').Value :=trim(BankNo.Text);rn ADOQuery.Parameters.ParamByName('Timer').Value := RegisterTime.Date;rn ADOQuery.Parameters.ParamByName('Deposit').Value := strtoint(Deposit.Text);rn ADOQuery.ExecSQL; //执行SQLrn ADOQuery.sql.text :='commit'; //事务提交rn ADOQuery.ExecSQL;rnrn编译没报错,运行没报错,为啥就是数据库中没有数据?
IdTCPClient, IdTCPServer 网络文件传输时,IdTCPClient客户端报错 在线等待
这是网上的经典网络文件传输代码 具体代码如下rnrnServer(Receive):rnrnprocedure TFrmServer.FormCreate(Sender: TObject);rnbeginrn IdTCPServer1.DefaultPort:=5616;rn IdTCPServer1.Active:=True;rnend;rnrnprocedure TFrmServer.IdTCPServer1Execute(AThread: TIdPeerThread);rnvarrn rbyte:array[0..4096] of byte;rn sFile:TFileStream;rn cnt,cmd,FileSize:integer;rn str,FileName:string;rnrnbeginrn str:=AThread.Connection.ReadLn; //接收文件大小及文件名rn cmd:=pos('|',str); //查找分隔符rn FileName:=copy(str,1,cmd-1); //提取文件名rn FileSize:=StrToInt(copy(str,cmd+1,Length(str)-cmd+1)); //提取文件大小rn if MessageBox(0,Pchar('用户 '+AThread.Connection.Socket.Binding.PeerIP+'要给您传送文件 "'+FileName+'" 您是接受还是拒绝?'),'文件接受',MB_YesNo or MB_ICONQUESTION)=ID_Yes then //询问是否接收rn beginrn ProgressBar1.Max:=FileSize; //初始化进度条rn ProgressBar1.Position:=0;rn SaveDialog1.FileName:=FileName; //指定保存的默认文件名,一定要在 SaveDialog1.Execute;之前,不然文件名为空rn SaveDialog1.Execute;rn sFile:=TFileStream.Create(SaveDialog1.FileName,fmCreate); //创建待写入的文件流rn While FileSize>4096 dorn beginrn AThread.Connection.ReadBuffer(rbyte,4096);// 读取文件流rn sFile.Write(rByte,4096); //写入文件流rn cnt:=AThread.Connection.ReadInteger; //从发送端接收最新的进度位置信息rn ProgressBar1.Position:=ProgressBar1.Position+cnt; //更新显示进度rn Label1.Caption:='当前接收进度..';rn StatusBar1.Panels[0].Text:='正在接收文件中...';rn inc(FileSize,-4096);rn end;rn AThread.Connection.ReadBuffer(rbyte,FileSize);// .ReadBuffer(rbyte,iLen);rn sFile.Write(rByte,FileSize);rn sFile.Free;rn StatusBar1.Panels[0].Text:='文件接收完成!';rn Label1.Caption:='文件接收完成!';rn end;rn END;rnrnprocedure TFrmServer.FormDestroy(Sender: TObject);rnbeginrn IdTCPServer1.Active:=False;rn Application.Terminate;rnend;rnrnClient(Send):rnrnprocedure TFrmClient.SpeedButton1Click(Sender: TObject);rnbeginrn OpenDialog1.Execute;rn edtFileName.Text:=OpenDialog1.FileName;rnend;rnrnprocedure TFrmClient.btnSendClick(Sender: TObject);rnvarrn iFileHandle:integer;rn iFileLen,cnt:integer;rn buf:array[0..4096] of byte;rnrnbeginrnif (edtAddress.Text<>'')and (edtFileName.Text<>'') thenrnbeginrn IdTCPClient1.Host:=edtAddress.Text;rn IdTCPClient1.Port:=5616;rn tryrn IdTCPClient1.Connect(5000);rn exceptrn StatusBar1.Panels[0].Text:='连接接受方失败!';rn exit;rn end;rn if IdTCPClient1.Connected thenrn beginrn iFileHandle:=FileOpen(edtFileName.Text,fmOpenRead);rn iFileLen:=FileSeek(iFileHandle,0,2);rn FileSeek(iFileHandle,0,0);rn ProgressBar1.Max:=iFileLen;rn ProgressBar1.Position := 0;rn IdTCPClient1.WriteLn(ExtractFileName(edtFileName.Text)+'|'+IntToStr(iFileLen));rn while true dorn beginrn Application.ProcessMessages;rn cnt:=FileRead(iFileHandle,buf,4096);rn IdTCPClient1.WriteBuffer(buf,cnt);rn IdTCPClient1.WriteInteger(cnt);rn ProgressBar1.Position:=ProgressBar1.Position + cnt;rn StatusBar1.Panels[0].Text:='正在传送文件...';rn if cnt+IntToStr(iFileLen)); Server 端 就可以正常接收到这个信息rn请问各位大侠,如何排查上述的错误啊 在线等待rn
关于idtcpserver和idtcpclient文件传输
最近本人在做一个东西,在一个关键的部分卡住了,请高手帮忙!在线等~~rn本人用idtcpserver和<em>idtcpclient</em>做一个文件传输的工具.rn要求在server端的stringgrid中显示出所连接上的client端的一些信息,如IP地点,登录的用户名等.rn并可在server端选择所连接上的client端进行文件传输和消息传递.rn如果分不够,可以另开帖给分.感谢!
关于IDTCPServer和IDTCPClient数据传输
我在服务器端用:rnrn TListClient=class(Tobject)rn DNS,rn Name :String;rn Listlink :Integer;rn Thread :Pointer;rn.............rnrn保存客户端信息,但是在客户端非法关闭的时候,服务器没有自动刷新列表,我还写了一个刷新列表的函数,但是每次非法退出时都要手动刷新才行,如果不刷新下次列表信息就有问题了。难道非要定时检测吗?不知各位有什么好方法介绍一下,谢谢。rnrn再问一下,用IDTCPServer和IDTCPClient数据传输,传输入接收的数据大小多少是最合适的,太大了会不会有数据丢失的现像!
IdTcpClient、IdTcpServer 演示程序修正版
IdTcpClient、IdTcpServer 演示程序修正版。 演示程序的功能:不同的客户端发送消息、群发消息。类似局域网内的 QQ 的功能。 从官方站点下载的演示程序,由于在Server端的线程列表里不能正确区分所有连接的客户端,所以只能“群发”消息,而不能给指定的客户端发送消息(这个功能原代码里实现了,但是有Bug,所以不能用,修正版正是修正了这个错误)。 本人修改后的代码通过 IP 地址区分不同的客户端,接收人(Recipient)填写IP地址,就能发送消息。接收人为空,给所有人发消息(群发)。-----------------------------------------------===更多计算机技巧,请访问:电脑学习网:http://www.why100000.com===
idtcpclient readinteger 提示undeclared
unit UntTBaseSocketClient;rnrnrninterfacernuses SysUtils, IdTCPConnection, IdSocks, idstack,IdTCPClient;rntypern Pint = ^integer;rn TBaseSocketClient = classrn protectedrn procedure OnCreate; dynamic;rn procedure OnDestory; dynamic;rn publicrn ExeGIDStack: TIdStack;rn [color=#FF0000] Client: TIdTCPClient;[/color]rn function GetHead: Integer; //读取报头rn procedure SendHead(ICmd: Integer); //发送报头rn procedure SendObject(IObj: TObject); //发送对象rn procedure GetObject(IObj: TObject; IClass: TClass); overload;rn //接收对象 自己根据类之类来创建对象rn procedure GetObject(IObj: TObject); overload; //由外部代入已经创建好的对象rn procedure SendZipFile(IFileName: string); //发送压缩文件rn procedure GetZipFile(IFileName: string); //接收压缩文件rn constructor Create(IHost: string = '127.0.0.1'; IPort: Integer = 0); overload;rn constructor Create(const ProxyHost: string; ProxyPort: Integer;rn ProxyUser, ProxyPassword: string); overload;rn destructor Destroy; override;rn end;rnrnimplementationrnrnuses Classes, untfunctions;rnrn TBaseSocketClient rnrnconstructor TBaseSocketClient.Create(IHost: string = '127.0.0.1'; IPort:rn Integer = 0);rnbeginrn Client := TIdTCPClient.Create(Client);rn Client.Host := IHost;rn Client.Port := IPort;rn if (ExeGIDStack <> nil) and (GStack = nil) thenrn ExeGIDStack := GStack;rn OnCreate;rnend;rnrndestructor TBaseSocketClient.Destroy;rnbeginrn tryrn OnDestory;rn if Client.Connected thenrn Client.Disconnect;rn Client.Free;rn Client := nil;rn exceptrn end;rn inherited;rnend;rnrnfunction TBaseSocketClient.GetHead: Integer;rnbeginrn[color=#FF0000] Result := Client.ReadInteger;[/color]rn//[color=#FF0000][DCC Error] UntTBaseSocketClient.pas(61): E2003 Undeclared identifier: 'ReadInteger'[/color]rnend;rnrn……rnrnd2007
IdTcpClient 怎么取消 ReadStream
再附一个问题rnrn我DLL 里有一个procedure:stdcall 类型的变量,在其它过程中调用这个变量;rnrnVB 里也 addressof 也设置成功了。。可是为什么VB里显示的是乱码呢?!rnrn实际上就是想激活VB里面的一事件rn
IdtcpClient和Idtcpserver,心跳包!
用indy做个东西,已经实现了心跳,但是现在无论client和server是否正在通信,它都在发心跳,我觉得这样不好~rnrn我想当client和server正在通信的时候,比如正在传输一个文件的时候,不要发送心跳,空闲的时候再发。请问idclient和idtcpserver有没有什么函数,可以检测到当前连接上有数据正在发送?rnrnps:他们的onwork事件我不想用,因为只有writestream和writefile才有用。
IDTCPClient/IDTCPServer/IDUDPClient/IDUDPServer
一个网络系统,在客户端相互信息发送时,同时要求记录保存到服务器的数据库里,请教服务器端/客户端分别用INDY的具体哪个控件比较合理
如何IdTCPClient使用?
我想用<em>delphi</em>中的IdTCPClient控件与VC++所编写的SERVER程序进行通讯,但我刚学会DELPHI,很多控件不会用。请问如何才能通过此控件与VC++所编写的SERVER程序通讯。rnvc++所编写的SERVER程序如下:rn#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")rnHRESULT hr;rnrnvoid CServersocketDlg::OnListen() rnrn if(!strsetup)rn setup();rn strsetup=1;rn if(m_sock!=NULL)rn rn closesocket(m_sock);rn m_sock=NULL;rn rn UpdateData(TRUE);rn m_sock = socket(AF_INET,SOCK_STREAM,0);rn if (m_sock == INVALID_SOCKET) rn rn errnum=WSAGetLastError();rn MessageBox("socket() failed", "Error", MB_OK);rn closesocket(sock);rn return;rn rnrn local_sin.sin_family = AF_INET;rn local_sin.sin_addr.S_un.S_addr = INADDR_ANY;rn local_sin.sin_port= m_port;rnrn if (bind(m_sock, (struct sockaddr FAR *) &local_sin, sizeof(local_sin)) == SOCKET_ERROR) rn rn errnum=WSAGetLastError();rn UpdateData(FALSE);rn return;rn rn if (listen(m_sock,1) < 0) rn rn sprintf(szBuff, "%d is the error", WSAGetLastError());rn MessageBox(szBuff, "listen(m_sock) failed", MB_OK);rn return;rn rn elsern rn SetTimer(1,2000,NULL);rn rnrnvoid CServersocketDlg::OnTimer(UINT nIDEvent) rnrn char rev[20];rn int status;rn int strmsg=0;rn int flag;rnrn status = recv( sock, rev, 20, 0 );rn if (status == SOCKET_ERROR) rn rn //wsprintf(rev, "Error %d", WSAGetLastError());rn //MessageBox(rev, "Error with recv()", MB_OK);rn rn rev[status] = '\0'; rn m_rev=rev;rn UpdateData(FALSE);rnrn acc_sin_len = sizeof(acc_sin);rn sock = accept(m_sock,(struct sockaddr FAR *) &acc_sin,(int FAR *) &acc_sin_len );rn if (sock < 0) rn rn sprintf(szBuff, "%d is the error", WSAGetLastError());rn MessageBox(szBuff, "accept(sock) failed", MB_OK);rn return;rn rnrn CDialog::OnTimer(nIDEvent);rnrn
IdTCPClient和IDTCPServer传输问题?
服务器端rnprocedure TForm1.ServerConnect(AThread: TIdPeerThread);rnbeginrnAthread.Connection.ReadBuffer(KR_login,sizeof(KR_login));rn if (KR_login.Name = '1111') and (KR_login.Password = '1111') thenrn memo1.lines.add('登陆成功') else beginrn memo1.lines.add('登陆失败');rn Athread.Connection.Disconnect;rn end;rnend;rnrnrn客户端rnrnprocedure TForm1.Button1Click(Sender: TObject);rnbeginrn Client.Host := ServiceIp.Text;rn Client.Port := StrToint(Serviceport.Text);rn Client.Connect(5000);rn Login(Client,L_name.Text,L_pass.Text);rnend;rnrnprocedure TForm1.Login(Icon: TIdTCPClient; Name,password: String);rnvarrn Lbuff: TKR_login;rnbeginrn Lbuff.Name := name;rn Lbuff.Password := password;rn Icon.Writebuffer(Lbuff,sizeof(lbuff));rnend;rnrn现的问题是:在登际不成功的时候,服务器断开与客户端的连结,但是现在发现如果第一次登陆不成功的话,第二次登陆客户端就出现already connected 错误提示,,感觉Athread.Connection.Disconnect;没有执行,但是 memo1.lines.add('登陆失败');正常显示,问下哥哥可哥们,我到底该怎么断开连结rnrnrnrn
再问一边,没办法 。。idtcpclient问题 ???
Demo看不懂 。。。rn帮帮新手 ,能详细点最好 。就接收个服务器上的时事数据。rn什么id。端口的。整了几天了。。谢谢 了 。。各位。。
请问idtcpserver与idtcpclient互通问题
每一个<em>idtcpclient</em>连上idtcpserver都有一个athread。rn请问idtcpserver怎么给指定的客户发消息。有无简单的例子。。rn比如我有四个客户连上了。怎么发啊?rnrn
IdTCPClient 和IDTCPServer传输图片的问题
MyFirstBmp是内存流,已经存入了个32bit色的图片,发送到服务端的时候为什么服务端会主动关闭?发送8bit的图片就不会,而且能在TImage画布出来 rn客服端发送图片代码 : rn Form1.IdTCPClient1.WriteInteger(MyFirstBmp.Size);rn Form1.IdTCPClient1.WriteBuffer(MyFirstBmp.Memory^,MyFirstBmp.Size,true);rn服务端接受图片代码:rnvar rn BufferLen :Integer; MyBuffer: array[0..1000000] of Byte;rnbeginrn BufferLen:= AThread.Connection.ReadInteger();rn AThread.Connection.ReadBuffer(MyBuffer,BufferLen);rn MyFirstBmp:=TMemoryStream.Creatern MyFirstBmp.Clear; //MyFirstBmp是内存流rn MyFirstBmp.Write(MyBuffer,BufferLen);//rn MyFirstBmp.Position := 0;rn TempBmp:=TBitmap.Create;rn TempBmp.LoadFromStream(MyFirstBmp);rn Image1.Width := TempBmp.Width;rn Image1.Height := TempBmp.Height;rn Image1.Canvas.Draw(0,0,TempBmp);rn MyFirstBmp.free;rnend;
IdTCPClient通讯问题【高分-100】
先讲下我东西的特殊性,客户端是我的电脑,服务器端不是电脑,而是串口/以太网转换器,串口接在一块做好的功能板子上,网口接在网络中,通讯协议是用IdTCPClient 发送数据到功能板上,这个已经实现了,然后功能板收到数据以后立刻反馈一组数据 比如AA BB CC给客户端,我用readstring函数来接受的,一直都是timeout,没收到任何东西,私下用INPUTLN可以收到自己用另外一台电脑仿真的反馈,不过这个反馈要加上换行符,而硬件板子里是不可能加上换行符的再发送的,所以这种方法我只好放弃,现在寻求各位大虾,有什么好的解决办法吗?
请教indy(IdTCPClient与IdTCPServer)通讯
请教各位,用IdTCPClient和IdTCPServer做的适时通讯程序,应该怎么处理比较合适啊?rnrn1、我在IdTCPClient的execute里面读取接收到的数据,可是当IdTCPClient连接connect之后,cpu占用100%,rnexecute在不停的执行读取数据的操作,请问应该怎么处理啊?rnrn2、我应该在IdTCPClient里面怎么读取IdTCPServer发给来的数据?rnrn注意,客户端要保持长连接状态,适时发送数据。
IdTcpClient如何等待IdTcpServer开启
如何让IdTcpClient不停的Connect,直到IdTcpServer开启.目前的情况,即使把IdTcpClient.Connec放在循环中,只要IdTCPServer没有提前开启,这个Connect就只能执行一次.
DLL中使用IDTCPCLIENT的问题!!
想写个DLL里面包含IDTCPCLIENT,但是总是出错,各位都是<em>怎么做</em>的呀?rn偶是这样做的:加一个含IDTCPCLIENT的UNIT。不起作用呀?rn初次接触,贻笑大方。rn
如何设置 IDTCPCLIENT 与IDTCPSEVER 的IP .
各位大侠,为何我用IDTCPCLIENT/IDTCPSEVER 在两台电脑间传字符串时,如果clent 与server 在同一台电脑就能正常工作,一但分开放在两台电脑了,不管如何设置ip,总是会报socket error # 10046 的错误,哪位大侠指点一下该如何设ip:如server 的IP 为192.168.0.1 client 的IP 为:192.168.0.2 port 为6666。 idtcpserve 的binding 及defaultport 该如何设。<em>idtcpclient</em> 的 boundip、host、port 该如何设,才能在两台不同的电脑成功传递字符串。注 indy 是 for D6 的。rn
用IdTcpClient\IdTcpServer传送xml
以前没有接触过网络编程,照着demo做了一个发觉传送简单字符串可以,但传送流确失败了。主要就是客户端发送请求,服务端收到请求后检索数据,然后传送回客户端处理。但是客户端收不到服务端发回的信息。rn请大家指导,或者给出更好的方法。谢谢rnrn客户端:rnprocedure TForm1.Button1Click(Sender: TObject);rnvarrn s: string;rn AStream: TStringStream;rnbeginrn server.Active := True;rn client1.Connect;rn if client1.Connected thenrn beginrn AStream := TStringStream.Create('');rn bstream := TStringStream.Create('');rn tryrn xml处理……rnrn xml.SaveToStream(AStream);rn client1.OpenWriteBuffer;rn client1.WriteStream(AStream);rn client1.CloseWriteBuffer;rnrn AStream.Size := 0;rn client1.ReadStream(AStream); // 到这里就没有响应了rn AStream.Seek(0, soFromBeginning);rn xml.LoadFromStream(AStream);rnrn xml处理……rn finallyrn AStream.Free;rn client1.Disconnect;rn end;rn end;rnend;rnrnprocedure TForm1.ServerExecute(AThread: TIdPeerThread);rnvarrn sRequest: string;rn aStream: TStringStream;rn RootNode, InfoNode: IXMLNode;rn ParmNodes: IXMLNodeList;rnbeginrn with AThread.Connection dorn beginrn aStream := TStringStream.Create('');rn tryrn ReadStream(aStream);rn AStream.Seek(0, soFromBeginning);rn xml.LoadFromStream(aStream);rnrn xml处理……rn if sRequest = 'GET' thenrn beginrn aStream.size := 0;rn GetInfo(InfoNode.ChildNodes, aStream);rn showmessage(astream.DataString);rn OpenWriteBuffer;rn WriteStream(aStream);rn CloseWriteBuffer;rn end;rn finallyrn aStream.Free;rn disconnect;rn end;rn end;rnend;
IdTcpClient/IdTcpServer 连接Disconnected 无效?
朋友们,最近需要做一个程序,其中应用到IdTcpClient和IdTcpServer,Indy版本为10.2.3rn发现IdTcpClient.DisConnected后连接还是存在,rn采用FreeAndNil(IdTcpClient)后资源也不释放;rnrn同样,IdTcpServer的资源也释放不掉。rnrn加上Indy内存泄露确实最近得改版成ICS了。
nosql.docx下载
Membase 是 NoSQL 家族的一个新的重量级的成员。Membase是开源项目,源代码采用了Apache2.0的使用许可。该项目托管在GitHub.Source tarballs上,目前可以 下载beta版本的Linux二进制包。该产品主要是由North Scale的memcached核心团队成员开发完成,其中还包括Zynga和NHN这两个主要贡献者的工程师,这两个组织都是很大的在线游戏和社区网络 空间的供应商。 相关下载链接:[url=//download.csdn.net/download/lifesreason/4868306?utm_source=bbsseo]//download.csdn.net/download/lifesreason/4868306?utm_source=bbsseo[/url]
求m以内素数的和下载
很经典的问题,判断一个数是否是素数,并求他们的和。 相关下载链接:[url=//download.csdn.net/download/u010448157/5310019?utm_source=bbsseo]//download.csdn.net/download/u010448157/5310019?utm_source=bbsseo[/url]
.net实训文档资料下载
我们实训发的资料,未必有用 相关下载链接:[url=//download.csdn.net/download/u011209265/5650007?utm_source=bbsseo]//download.csdn.net/download/u011209265/5650007?utm_source=bbsseo[/url]
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制
我们是很有底线的