L
logpie
Unregistered / Unconfirmed
GUEST, unregistred user!
这是发送线程部分代码:
FRet:=WSASend(tmpSocket,@FWSABUF,1,byts,Flags,@FOverLap,nil);
BytesSent:=Byts;
if GlaEvent<>0 then
begin
if BytesSent=260 then SetEvent(GlaEvent); //260是我的一个数据包的大小
end; 如果数据发出去了就发信号
通知移动数据库记录位置
这是连续发送RECORD的程序段,GLAEVENT在FD_READ消息时CREATE:
frmMain.UserTable.Locate('User',FStr2,[]);
frmMain.URLTable.First;
for i:=0 to frmMain.URLTable.RecordCount -1 do
begin
newURL:=frmMain.URLTable.Fields[2].AsString;
oldURL:=frmMain.URLTable.Fields[1].AsString;
Pooler.RunActiveThreads(1,IP,ACPSocket,DataBuf,XX_DB_FILE_REAL,'','',overlap);
while true do
begin
WaitForSingleobject(GlaEvent,20); //这里如果该成INFINITE就只能发送第一条记录
frmMain.URLTable.Next;
ResetEvent(GlaEvent);
break;
end;
end;
Closehandle(GlaEvent);
end;
而接受数据时只能接受到第1条和第3条,其他的都接受不到,发送端用的EVENTSELECT,接受段用的完成端口
我想引起问题的可能是发送数据的速度赶不上记录移动的速度
所以用了EVENT来控制移动,稍微好了一点,能接受两条了,但就算我把20改成其他的等待时间,耶还是只能接受到这两条
不知该怎么样写....我不想用SQL... : )
FRet:=WSASend(tmpSocket,@FWSABUF,1,byts,Flags,@FOverLap,nil);
BytesSent:=Byts;
if GlaEvent<>0 then
begin
if BytesSent=260 then SetEvent(GlaEvent); //260是我的一个数据包的大小
end; 如果数据发出去了就发信号
通知移动数据库记录位置
这是连续发送RECORD的程序段,GLAEVENT在FD_READ消息时CREATE:
frmMain.UserTable.Locate('User',FStr2,[]);
frmMain.URLTable.First;
for i:=0 to frmMain.URLTable.RecordCount -1 do
begin
newURL:=frmMain.URLTable.Fields[2].AsString;
oldURL:=frmMain.URLTable.Fields[1].AsString;
Pooler.RunActiveThreads(1,IP,ACPSocket,DataBuf,XX_DB_FILE_REAL,'','',overlap);
while true do
begin
WaitForSingleobject(GlaEvent,20); //这里如果该成INFINITE就只能发送第一条记录
frmMain.URLTable.Next;
ResetEvent(GlaEvent);
break;
end;
end;
Closehandle(GlaEvent);
end;
而接受数据时只能接受到第1条和第3条,其他的都接受不到,发送端用的EVENTSELECT,接受段用的完成端口
我想引起问题的可能是发送数据的速度赶不上记录移动的速度
所以用了EVENT来控制移动,稍微好了一点,能接受两条了,但就算我把20改成其他的等待时间,耶还是只能接受到这两条
不知该怎么样写....我不想用SQL... : )