public virtual void Write(long pos, byte[] buf)
{
for (int i = 0; i < sockets.Length; i++)
{
while (sockets[i] != null)
{
try
{
Bytes.pack8(txBuf, 0, pos);
Array.Copy(buf, 0, txBuf, 8, buf.Length);
sockets[i].Send(txBuf);
if (!ack || pos != 0 || sockets[i].Receive(rcBuf) == 1)
{
break;
}
}
catch (SocketException) { }
sockets[i] = null;
nHosts -= 1;
if (HandleError(hosts[i]))
{
connect(i);
}
else
{
break;
}
}
}
file.Write(pos, buf);
}