Привожу свой код:
[spoiler=""Код""]
Код: Выделить всё
function TCDRDownload.Connect(sckConnect: TSocket; cszIP: pChar; uPort: uint): boolean;
var
AddrSock: TSockAddrIn;
begin
result:=false;
AddrSock.sin_family:=AF_INET;
AddrSock.sin_port:=htons(uPort);
AddrSock.sin_addr.S_addr:=inet_addr(cszIP);
{if AddrSock.sin_addr.S_addr=-1 then
AddrSock.sin_addr.S_addr:=GetHostByName('gds1.steampowered.com').h_addrtype; }
if AddrSock.sin_addr.S_addr=INADDR_NONE then
Exit;
if WinSock.connect(sckConnect, AddrSock, sizeof(AddrSock))=SOCKET_ERROR then
Exit;
result:=true;
end;
var
Host: PHostEnt;
bAccepted: boolean;
uPacketSize: uint;
sckGDS: TSocket;
p, szData: pChar;
tmp_4: ulong;
tmp_1: byte;
begin
if not Connect(sckConnect, '207.173.177.11', 27030) then
Exit;
if send(sckConnect, GD_CLIENTVER, 4, 0)=SOCKET_ERROR then
Exit;
if recv(sckConnect, bAccepted, 1, 0)=SOCKET_ERROR then
Exit;
if not bAccepted then
Exit;
tmp_4:=$00000001;
if send(sckConnect, tmp_4, 4, 0)=SOCKET_ERROR then
Exit;
tmp_1:=$03;
if send(sckConnect, tmp_1, 1, 0)=SOCKET_ERROR then
Exit;
//здесь идет вылет:
if recv(sckConnect, uPacketSize, 4, 0)=SOCKET_ERROR then
Exit;
uPacketSize:=ntohl(uPacketSize);
....
end;
Кто разбирается в этом, сообщите, где у меня что неправильно?