Текущий архив: 2004.03.28;
Скачать: CL | DM;
Вниз
Проверка соединения через сокеты Найти похожие ветки
← →
termos (2004-01-12 16:40) [0]Добрый день.
Хочу организовать проверку соединения по сокетам из стандартного набора Делфи.
Например на одной машине запускается сервер, на другой клиент. Клиент настроен на сервер. Берется какой-то порт по умолчанию, одновременно для сервера и клиента, если порт занят для сервера или клиента, то оба переходят на следующий порт и пробуют соединиться вновь. И так до тех пор, пока соединение не будет установлено. Для проверки того, что клиент соединился с нужным сервером, проводится обмен условленной строкой.
Как это удачно и просто можно реализовать?
Спасибо.
← →
kolba ot termosa (2004-01-12 16:46) [1]
> если порт занят для сервера или клиента
нахрена клиенту привязываться к фиксированному порту ?
это нужно серверу, но никак не клиенту.
читаем документацию по Winsock.
← →
termos (2004-01-12 16:57) [2]Хотя бы для того, чтобы он видел сервер
← →
kolba ot termosa (2004-01-12 17:03) [3]
> Хотя бы для того, чтобы он видел сервер
нет такого понятия "видел"
← →
termos (2004-01-13 08:16) [4]Кто-нибудь еще может ответить?
← →
kolba ot termosa (2004-01-13 08:44) [5]сервер :
for i:= 10000 to 20000 do
try
ServerSocket.Port := i;
ServerSocket.Active := True;
Break;
except
end;
if ServerSocket.Active then
ShowMessage("Порт = " + inttostr(i))
else
ShowMessage("В диапазоне от 10000 до 20000 свободных номеров портов нет !")
клиент :
ClientSocket.ClientType := ctBlocking;
for i:= 10000 to 20000 do
try
ClientSocket.Port := i;
ClientSocket.Active := True;
ClientSocket.Socket.SendText("Я - твой клиент !");
if ClientSocket.Socket.ReceiveText = "А я - твой сервер !" then
Break
else
Assert(False);
except
ClientSocket.Active := False;
end;
if ClientSocket.Active then
ShowMessage("Сервер обнаружен, порт = " + inttostr(i))
else
ShowMessage("В диапазоне номеров портов от 10000 до 20000 активность сервера не обнаружена !")
Страницы: 1 вся ветка
Текущий архив: 2004.03.28;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.022 c