Форум: "Сети";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
ВнизПроверка SOCKSов Найти похожие ветки
← →
csr © (2004-01-16 17:42) [0]Помогите кто может накалякать ф-цию для определения жив СОКС или мертв! Я деляю так (при помощи winsock):
function CheckSOCKServer(host: string; port: integer): Boolean;
type
THostAddr = array[1..4] of byte;
PHostAddr = ^THostAddr;
var
s : TSocket;
Name : TSockAddr;
WSData : WSAData;
HostEnt: PHostEnt;
ph : PHostAddr;
res : integer;
begin
result := False;
if WSAStartup($102, WSData) = 0 then
begin
s := socket(AF_INET, SOCK_STREAM, 0);
Name.sin_family := AF_INET;
HostEnt := gethostbyname(PChar(host));
if HostEnt <> nil then
begin
ph := PHostAddr(HostEnt^.h_addr_list^);
name.sin_addr.S_addr := Cardinal(ph^);
name.sin_port := ntohs(port);
res := connect(s, Name, SizeOf(TSockAddr));
// res := WSAGetLastError();
if res = 0 then
begin
result := True;
end;
end;
closesocket(s);
WSACleanup;
end;
end;
Собственно говоря, написано все как надо... но порой возникают разные глюки типа деление на ноль и проч. Дак вот поэтому обращаюсь к мастерам за помощью, мож кто-нить уже решал этот вопрос...
← →
Verg © (2004-01-16 19:29) [1]Не знаю при чем тут деление на ноль и кто такой СОКС, но для начала неплохо бы накалякать
fillchar(name, sizeof(name), 0);
перед тем как заполнять поля у этого Name.
← →
csr © (2004-01-17 09:48) [2]Знать что такое СОКС должен каждый, кто заходит в этот форум :). А fillchar не обязательно нужен. Но я попробую, мож и в правду из-за этого глюки. Сэнкс!!
← →
Anela (2004-01-17 16:18) [3]может надо так написать:
name.sin_family:=AF_INET;
name.sin_addr.S_addr := Cardinal(ph^);
name.sin_port := ntohs(port);
← →
csr_ (2004-01-19 17:46) [4]Удалено модератором
Примечание: Тебе же сказали RO...
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.031 c