类似服务器端向客户端发送如下信息
athread.Connection.WriteLn('正在连接...');
athread.Connection.WriteLn('正在验证登陆名...');
athread.Connection.WriteLn('你的名字原来是:');
athread.Connection.WriteLn('正在连接...');
athread.Connection.WriteLn('正在验证登陆名...');
athread.Connection.WriteLn('你的名字原来是:');
当然我在这读的过程中,如果readln读的为空是容易出错,当你把readln读的内容付给一个变量的时候,就可以解决了。
虽然上面的那个问题解决了,可是 我这个程序在局域网上调试很好,可是一放到internet网上就容易在传送的过程中丢失数据包,如果很不稳定,不知道有谁见过类似的问题,你们有是怎么解决的,我很想和你们一起探讨。
我用delphi做客户端没有问题(不会丢包,与VC通信会)
我想知道大家还有什么更好的方法了,如果采用校验的话,服务器端就得发送一条数据,等待客户端返回确认信息,再发送下一条数据,速度很慢的
我就是用tcpclent.readln,我想问的是当服务器端没有向客户端发送消息时,客户端-tcpclent.readln就会死机,请问如何进行以下判断?
-----------------------------
不太明白你的意思,
INDY控件服务器采用的是多线程÷租塞式的。每个客户端的IDTCPCLIENT对应服务器端的一个线程。
你可以设置IDTCPCLIENT的相应时间啊。过了时间就放弃啊。
定时调用ReadFromStack(false, 10, false)了,返回>0就有数据可读Indy确实问题不少,但我的LYFTP是基于Indy的,为了这我对Indy作了大量的修改哦/ by LY http://lysoft.7u7.net http://liuyang.7i24.com http://lysoft.91i.net
最简单的就是资料看看阻塞与非阻塞的区别是什么?
这个不是 INDY 的问题,这是阻塞机制的问题
while Pos(#13#10,pchar(tcpclient1.InputBuffer.Memory)) <= 0 do
tcpclient1.readfromstack;...