![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как найти всех доступных клиентов?
BillyJeans © (2003-06-19 10:40:00)
Написал клиентские модули, которые принимают строку символов. А в модуле админа, хочу опросить всех доступных клиентов, делаю это так:
s := socket(AF_INET, SOCK_STREAM, 0);
sa.sin_family := AF_INET;
sa.sin_port := htons(13);
for i := sADDR to eADDR do begin
sa.sin_addr.S_addr := htonl(i);
if connect(s, sa, sizeof(sa)) = 0 then Send(s, buf, 20, 0);
еnd;
Но проблема в том, что находится только первый клиент, игнорируя остальные :(
Подскажите пожалуйста, что делаю не так?
Digitman (2003-06-20 11:29:00) [1]да ведь чушь ты городишь !
модуль Winsock.pas (не думаю, что ты его не используешь), строка 353, текст :
{$EXTERNALSYM INVALID_SOCKET ( NOT(0)да ведь чушь ты городишь !
модуль Winsock.pas (не думаю, что ты его не используешь), строка 353, текст :
{$EXTERNALSYM INVALID_SOCKET =}
INVALID_SOCKET = TSocket(NOT(0));
{$EXTERNALSYM SOCKET_ERROR =}
SOCKET_ERROR = -1;
BillyJeans (2003-06-20 10:46:00) [2]
Просто моя дельфя не понимает, что такое INVALID_SOCKET :(
Digitman (2003-06-20 09:09:00) [3]
> А что такое INVALID_SOCKET? Может быть SOCKET_ERROR?
почему это SOCKET_ERROR ?
разве я при присвоении переменной s значения INVALID_SOCKET какую-то winsock-ф-цию выполняю ?
константа INVALID_SOCKET, заносимая в s, показывает, что с этого момента переменная s не содержит значения хэндла существующего гнезда
BillyJeans (2003-06-20 08:12:00) [4]
А что такое INVALID_SOCKET? Может быть SOCKET_ERROR?
и можно ли данную операцию реализовать через BROADCAST (протокол TCP)?
Digitman (2003-06-19 12:34:00) [5]s := INVALID_SOCKET;
sa.sin_family := AF_INET;
sa.sin_port := htons(13);
for i := sADDR to eADDR do begin
if s = INVALID_SOCKET then
s := socket(AF_INET, SOCK_STREAM, 0);
sa.sin_addr.S_addr := htonl(i);
if connect(s, sa, sizeof(sa)) = 0 then
begin
Send(s, buf, 20, 0);
CloseSocket(s);
s := INVALID_SOCKET;
( s)s := INVALID_SOCKET;
sa.sin_family := AF_INET;
sa.sin_port := htons(13);
for i := sADDR to eADDR do begin
if s = INVALID_SOCKET then
s := socket(AF_INET, SOCK_STREAM, 0);
sa.sin_addr.S_addr := htonl(i);
if connect(s, sa, sizeof(sa)) = 0 then
begin
Send(s, buf, 20, 0);
CloseSocket(s);
s := INVALID_SOCKET;
end;
еnd;
if s <> INVALID_SOCKET then
CloseSocket(s);