Форум: "Начинающим";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];
Внизwinsock Найти похожие ветки
← →
Res (2008-02-15 22:35) [0]Подскажите пожалуйста, что не так в моей куске кода. Понял 1, проблема в recv
var
s:TSocket;
Data:TWSAData;
Addr:TSockAddr;
str,st:string;
begin
WSAStartup($101, data); // èíèöèàëèçèðóå&# 236; wsa
s:=socket(AF_INET, SOCK_STREAM,IPPROTO_TCP);
Addr.sin_family:=AF_Inet;
Addr.sin_port:=htons(80);
Addr.sin_addr.S_addr:=inet_addr("213.180.204.8");
Connect(S,Addr,SizeOf(TSockAddr));
str:="GET / HTTP/1.1"+#13#10+"nHost: "+"ya/ru"+#13#10+"Connection: Close"+#13#10#13#10;
send(s, str, length(str),0);
Recv(s, st, 1023, 0);
closesocket( s ); // çàêðûâàåì ñîêåò
WSACleanup(); // äåèíèöèàëèçèð&# 243;åì wsa
end;
← →
Res (2008-02-15 22:38) [1]ya/ru, это ya.ru :) Просто был другой сайт
← →
Джо © (2008-02-15 23:17) [2]str:="GET / HTTP/1.1"+#13#10+"nHost: "+"ya.ru"+#13#10+"Connection: Close"+#13#10#13#10;
send(s, str[1], length(str),0);
SetLength (st,1023);
Recv(s, st[1], Length(st), 0);
← →
Джо © (2008-02-15 23:22) [3]
Ну и прием лучше порциями, то есть, примерно так:
var
st:string;
Buff: array [0..1023] of Char;
Recived: Integer;
...
St := "";
Recived := -1;
while Recived <> 0 do
begin
Recived := Recv(s, Buff, Length(Buff), 0);
St := St + Copy (Buff,0,Recived);
end;
← →
easy © (2008-02-15 23:35) [4]хароший пример работы с сокетами лежит тут -
http://elite-mythology.sourceforge.net/TAKChat/
← →
Res (2008-02-16 12:23) [5]Непашет, незнаю почему, St всегда равно "" :(
← →
Джо © (2008-02-16 18:35) [6]> [5] Res (16.02.08 12:23)
> Непашет, незнаю почему, St всегда равно "" :(
Вышеприведенный мною код работает.
И это, у тебя там ошибка в команде GET, «nHost» вместо «Host». Впрочем, это не важно, St все-равно не будет пустым.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c