检查过了,中间没有问题的! read_str:=Readln(); logging(file_log,'读取到'+read_str); for i:=0 to 30 do ret_k[i]:=''; str_dis(read_str,ret_k,'|||'); db97.StartTransaction; flag:=ret_k[0]; //标识位 if flag='authen' then begin sendstr:='authen|||客户端认证|||31|||000=1|||003=0|||004=认证通过|||'; WriteLn(sendstr); goto 10; logging(file_log,'send authen'); 比如这段代码,日志里显示已经收到read_str,但是sendstr的确没有发出去!偶觉得好没有理由的! 测试过几次,只有程序启动后第一次Writeln才会起作用!
read_str:=Readln();
logging(file_log,'读取到'+read_str);
for i:=0 to 30 do
ret_k[i]:='';
str_dis(read_str,ret_k,'|||');
db97.StartTransaction;
flag:=ret_k[0]; //标识位
if flag='authen' then
begin
sendstr:='authen|||客户端认证|||31|||000=1|||003=0|||004=认证通过|||';
WriteLn(sendstr);
goto 10;
logging(file_log,'send authen');
比如这段代码,日志里显示已经收到read_str,但是sendstr的确没有发出去!偶觉得好没有理由的!
测试过几次,只有程序启动后第一次Writeln才会起作用!
你把那个readtimeout设成2000或者别的试试是不是
Indy是有点小问题,但还不至于WriteLN只能用一次的
一定是你的Code有问题的http://lysoft.7u7.net
我做的是一个短连接,第一个连接接受两个包,第一个用来确认是否联接,客户端收到我的确认消息后会紧接着发实际要处理的包,我会再回一个确认包的!但是只有第一个包会返回确认消息,也就是Writeln,下面客户端的消息我可以受到,但是程序不做Writeln就disconnnect了!当然,从第2个连接开始我只会收到一个包!~暴郁闷!~是缓冲区的问题?还是………………
看该贴第三楼的代码,str_dis只是一个处理函数,没影响的!~短短几行,没理由跳出Writeln语句的啊!
不过用的是TCPSERVER TCPCLIENT
每次发送、接收后如果执行断开、重新连接就可以解决
土办法 朋友可以试试