Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как найти всех доступных клиентов?


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);


Наверх

Титульная страница Поиск, карта сайта Написать письмо