A
asnychen
Unregistered / Unconfirmed
GUEST, unregistred user!
我用用TServerSocket写的通信,为什么在连续工作10天以后会出现“SQL不存在或拒绝访问”,我的代码如下:
procedure TmainFM.ServerClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
sdsj: string; //收到数据
Ret : Integer;
begin
if socket.ReceiveLength > 0 then
begin
try
hMutex := CreateMutex(nil, False, '12345'); // 创建互斥对象
Ret:=GetLastError;
if Ret<>ERROR_ALREADY_EXISTS then
begin
sdsj:=socket.ReceiveText;
zhsj:=UTF8Decode(sdsj); //将UTF-8编码转换成string
if zhsj<>'' then
begin
memo2.Lines.Add('('+datetimetostr(now)+')收到数据:'+zhsj+'('+server.socket.connections[0].RemoteAddress+')');
MyPro;//我自定义的过程,在过程里动态创建一个TADOQuery连接SQL进行访问
socket.SendText(UTF8Encode(fhsj));
end;
end
else
begin
memo2.Lines.Add('('+datetimetostr(now)+')收到数据:'+zhsj+'('+server.socket.connections[0].RemoteAddress+')');
fhsj:='0#用户使用数量较多,请重试';
memo2.Lines.Add(fhsj);
socket.SendText(UTF8Encode(fhsj));
end;
finally
ReleaseMutex(hMutex);
CloseHandle(hMutex);
end;
end;
end;
试了很多,但一直找不到问题出在哪,创建互斥我在程序启动时创建也试过,不过在线程里不起作用,所以后来改成在线程里创建了。起了作用但是连续工作10天后就出现问题,中间不会出问题,当然不是说一到10天就出问题。
另外我用临界区也试还是出一样的问题。。。
请各位大哥帮帮我,问题出在哪?
procedure TmainFM.ServerClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
sdsj: string; //收到数据
Ret : Integer;
begin
if socket.ReceiveLength > 0 then
begin
try
hMutex := CreateMutex(nil, False, '12345'); // 创建互斥对象
Ret:=GetLastError;
if Ret<>ERROR_ALREADY_EXISTS then
begin
sdsj:=socket.ReceiveText;
zhsj:=UTF8Decode(sdsj); //将UTF-8编码转换成string
if zhsj<>'' then
begin
memo2.Lines.Add('('+datetimetostr(now)+')收到数据:'+zhsj+'('+server.socket.connections[0].RemoteAddress+')');
MyPro;//我自定义的过程,在过程里动态创建一个TADOQuery连接SQL进行访问
socket.SendText(UTF8Encode(fhsj));
end;
end
else
begin
memo2.Lines.Add('('+datetimetostr(now)+')收到数据:'+zhsj+'('+server.socket.connections[0].RemoteAddress+')');
fhsj:='0#用户使用数量较多,请重试';
memo2.Lines.Add(fhsj);
socket.SendText(UTF8Encode(fhsj));
end;
finally
ReleaseMutex(hMutex);
CloseHandle(hMutex);
end;
end;
end;
试了很多,但一直找不到问题出在哪,创建互斥我在程序启动时创建也试过,不过在线程里不起作用,所以后来改成在线程里创建了。起了作用但是连续工作10天后就出现问题,中间不会出问题,当然不是说一到10天就出问题。
另外我用临界区也试还是出一样的问题。。。
请各位大哥帮帮我,问题出在哪?