U
ucan1
Unregistered / Unconfirmed
GUEST, unregistred user!
ClientSocket1Connect事件写如下代码:
buffer:array[1..40960] of Char;
try
fStream:=TFileStream.Create('c:/b.doc',fmOpenRead);
actualRead:=fStream.Read(buffer,SizeOf(buffer));
k1:=clientsocket1.socket.SendBuf(buffer,SizeOf(buffer));
actualRead:=fStream.Read(buffer,SizeOf(buffer));
Label01:
k2:=clientsocket1.socket.SendBuf(buffer,actualRead); //***
if (k2=-1) then
goto Label01;
finally
fStream.Free;
end;
上面带***号的这个语句第一次发送时不一定成功,所以我加了一个判断语句,如果
发送未成功则继续发送;
虽然我post数据到服务器成功,但是发生错误:socket error :10053
错误的含义是说已建立的socket连接被主机上的软件终止;好像是连接超时。
现在我定义的buffer已经算大了(40K),况且我要post的文件不大(67K),只要2次sendbuf就可以了;但是第二次sendbuf就出现了问题。以后我要post的文件会更大,要执行的sendbuf就更多了,岂不是需要执行的goto次数更多的多,所需要等待消耗的时间也多多了,那就更应该会发生
已建立的socket连接被主机上的软件终止这种问题。我该怎么办呢?
才能使每一次sendbuf都能顺利的发送成功。
buffer:array[1..40960] of Char;
try
fStream:=TFileStream.Create('c:/b.doc',fmOpenRead);
actualRead:=fStream.Read(buffer,SizeOf(buffer));
k1:=clientsocket1.socket.SendBuf(buffer,SizeOf(buffer));
actualRead:=fStream.Read(buffer,SizeOf(buffer));
Label01:
k2:=clientsocket1.socket.SendBuf(buffer,actualRead); //***
if (k2=-1) then
goto Label01;
finally
fStream.Free;
end;
上面带***号的这个语句第一次发送时不一定成功,所以我加了一个判断语句,如果
发送未成功则继续发送;
虽然我post数据到服务器成功,但是发生错误:socket error :10053
错误的含义是说已建立的socket连接被主机上的软件终止;好像是连接超时。
现在我定义的buffer已经算大了(40K),况且我要post的文件不大(67K),只要2次sendbuf就可以了;但是第二次sendbuf就出现了问题。以后我要post的文件会更大,要执行的sendbuf就更多了,岂不是需要执行的goto次数更多的多,所需要等待消耗的时间也多多了,那就更应该会发生
已建立的socket连接被主机上的软件终止这种问题。我该怎么办呢?
才能使每一次sendbuf都能顺利的发送成功。