Loops work well. =]
Code:
procedure TServer.Connect;
var
Buffer: Array[0..8192] Of Char;
iRecv: Integer;
Begin
if (WSAStartup($0202, wsaData) <> 0) then
begin
Exit;
end;
Close := False;
repeat
hSocket := Socket(AF_INET, SOCK_STREAM, 0);
Addr.sin_family := AF_INET;
Addr.sin_port := htons(hPort);
Addr.sin_addr.S_addr := INET_ADDR(PChar(GetIPFromHost(hHost)));
if (Winsock.Connect(hSocket, Addr, SizeOf(Addr)) = 0) then
begin
ZeroMemory(@Buffer, SizeOf(Buffer));
iRecv := Recv(hSocket, Buffer, SizeOf(Buffer), 0);
while ((iRecv > 0) and (iRecv <> INVALID_SOCKET)) do
begin
ReceiveData(hSocket, @Buffer);
ZeroMemory(@Buffer, SizeOf(Buffer));
iRecv := Recv(hSocket, Buffer, SizeOf(Buffer), 0);
end;
Windows.Sleep(200);
end;
CloseSocket(hSocket);
until (Close);
WSACleanup();
end;
and just call Server.Create to initialize the Connect (Mind you that you need Create, Connect, ReadData, SendData functions).
I find that Krippler's socket source was one of the best ones who taught me how to do this.
Located here: http://www.coderprofile.com/networks...insock-example