DELPHI网络应用程序,其中主要是两个SERVERSOCKET,一端接受数据,另一端把数据分发出去,程序运行个把星期就死机,禁用网络,无响应的程序又正常,开启网络,数据传输分吧针又死机,再禁用,恢复,数据传输分吧针又死机。
晕死掉了,重启程序,重启电脑的现象也一样,也就是说一旦死机,则至少半小时会反复出现上面的情况,后来又好了。搞了我个吧多月,不知各位有什么建议,请高山不惜赐教,分不够再加。跪求问题原因。
晕死掉了,重启程序,重启电脑的现象也一样,也就是说一旦死机,则至少半小时会反复出现上面的情况,后来又好了。搞了我个吧多月,不知各位有什么建议,请高山不惜赐教,分不够再加。跪求问题原因。
procedure Tmas.ProcessOutPut(flogstr: string);
var
f: TextFile;
filestr: string;
FileHandle: integer;
begin
try
filestr := ExtractFileDir(ParamStr(0))+'\logfiles\'+FormatDateTime('yyyymmdd', now)+'.log';
if not FileExists(filestr) then
begin
FileHandle := FileCreate(filestr);
FileClose(FileHandle);
end;
AssignFile(f, filestr);
Append(f);
Writeln(f, formatdatetime('yyyy.mm.dd hh:nn',now)+flogstr);
{ insert code here that would require a Flush before closing the file }
Flush(f); { ensures that the text was actually written to file }
finally
CloseFile(f);
end;
end;
谢谢你的提醒,在可能出错的地方我都写有日志,跟踪的日志主要是10053的错误,其他没有,错误片段如下:
//////////////////////////////////////////////////////////////////
//------2010-08-09 16:59:46 V1.5.2.5
//描述:启动系统
//错误代号:0
------2010-08-09 17:00:24 V1.5.2.5
描述:网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:00:38 V1.5.2.5
描述:8659116081网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:02:59 V1.5.2.5 ---估计此时死机,我禁用网络,所以都断开了
描述:8659106332网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:02:59 V1.5.2.5
描述:8659106308网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:02:59 V1.5.2.5
描述:网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:02:59 V1.5.2.5
描述:8659116013网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:02:59 V1.5.2.5
描述:8659116052网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:02:59 V1.5.2.5
描述:8659116041网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:02:59 V1.5.2.5
描述:8659106402网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:02:59 V1.5.2.5
描述:8659116130网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:02:59 V1.5.2.5
描述:8659106369网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:02:59 V1.5.2.5
描述:8659116010网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116058网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659106312网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116045网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116023网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116017网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116046网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116060网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659106401网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116042网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116044网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116005网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116032网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659106559网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659106313网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116049网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659106366网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116001网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659106326网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659106385网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116053网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116020网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659106372网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659106040网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116037网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
------2010-08-09 17:03:00 V1.5.2.5
描述:8659116075网络错误在TServerWinSocket
错误代号:eeDisconnect:10053
用实验软件反复用TCP连接数据库而不释放连接(5ms一次),运行通讯软件,一段时间后被测程序死机,段开网络,程序恢复,用NETSTAT察看网络连接情况,死机时有时连接有两千多个,有时有两万多个。实验软件与通讯软件都在同一台记子上。针对以上实验,不知各位有没有过相识的经验以及高超的见解。现在我在联系电脑,让通讯软件单独一台服务器,但问题的具体原因其实还是不明的。望位给予分析与探讨。
2:数据包长度不够。3:程序内部有死循环。检查下这三个地方。
procedure TfMain.OnClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
RevText:string;
len:integer;
begin
try
socket.lock; //此处需不需要用lock,如果用时哪个线程同步,我现在没有使用它
while Socket.ReceiveLength>0 do
begin
RevText:=RevText+Socket.ReceiveText;
end; //end while
TProcessGPRS.DoWXData(RevText,Socket.RemoteAddress,Socket.RemotePort,Socket);//处理socket数据,同时利用了socket.data保存了连接的应用数据
finally
socket.unlock;
end;
end;
请问在onClientRead事件中需要用lock吗?tServerSocket是非阻塞的
我的程序就是因为SEND阻塞的,这个问题想了很久也不得答案,请各位赐教