Size: a a a

2020 April 13

DB

Dmitry Belkevich in Delphi & Lazarus
Serjone
это, похоже старое инди. У меня не стрим приходит, а байты.
ну я думаю что разницы нет особой ) если будет работать
источник

G

Garik in Delphi & Lazarus
а есть код отсылки бродкаста?
источник

G

Garik in Delphi & Lazarus
может ты его еще в Active не выставляешь))))
источник

G

Garik in Delphi & Lazarus
  object srv1: TIdUDPServer
   Active = True
   BroadcastEnabled = True
   Bindings = <>
   DefaultPort = 2222
   ReuseSocket = rsTrue
   Left = 192
   Top = 112
 end
 object srv2: TIdUDPServer
   Active = True
   Bindings = <
     item
       IP = '0.0.0.0'
       Port = 2222
     end>
   DefaultPort = 2222
   ReuseSocket = rsTrue
   OnUDPRead = srv2UDPRead
   Left = 264
   Top = 112
 end

procedure TForm1.srv2UDPRead(AThread: TIdUDPListenerThread;
 const AData: TIdBytes; ABinding: TIdSocketHandle);
var
 xStream : TStringStream;
begin
 xStream := TStringStream.Create(TBytes(AData));
 Memo1.Lines.Add(xStream.DataString);
 xStream.Free;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 srv1.Broadcast(IntToStr(Random(100)), srv1.DefaultPort);
end;

все ловит отсылает и ловит прекрасно
источник

G

Garik in Delphi & Lazarus
ReuseSocket у меня потому что на одной машине тестю
источник

DB

Dmitry Belkevich in Delphi & Lazarus
я так думаю что локально какой-то пробкотрон. как это всегда и бывает
источник

G

Garik in Delphi & Lazarus
для srv1 можно и DefaultPort не указывать, тогда и ReuseSocket не нужен
источник

S

Serjone in Delphi & Lazarus
Garik
а есть код отсылки бродкаста?
IdUDPServer1.Broadcast(#00, 7080); вот такой у меня броадкаст. Я в этот компонент ни активным не делаю, ничего, просто в таймере вот это стоит, оно рассылает всем нуль, его получают и отправляют в обратку свой ip
источник

G

Garik in Delphi & Lazarus
а отсылка в вирешарке видится?
источник

S

Serjone in Delphi & Lazarus
да
источник

S

Serjone in Delphi & Lazarus
Garik
  object srv1: TIdUDPServer
   Active = True
   BroadcastEnabled = True
   Bindings = <>
   DefaultPort = 2222
   ReuseSocket = rsTrue
   Left = 192
   Top = 112
 end
 object srv2: TIdUDPServer
   Active = True
   Bindings = <
     item
       IP = '0.0.0.0'
       Port = 2222
     end>
   DefaultPort = 2222
   ReuseSocket = rsTrue
   OnUDPRead = srv2UDPRead
   Left = 264
   Top = 112
 end

procedure TForm1.srv2UDPRead(AThread: TIdUDPListenerThread;
 const AData: TIdBytes; ABinding: TIdSocketHandle);
var
 xStream : TStringStream;
begin
 xStream := TStringStream.Create(TBytes(AData));
 Memo1.Lines.Add(xStream.DataString);
 xStream.Free;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 srv1.Broadcast(IntToStr(Random(100)), srv1.DefaultPort);
end;

все ловит отсылает и ловит прекрасно
Странно. Свои броадкасты ловит, а от устройства нет
источник

G

Garik in Delphi & Lazarus
а свои с другой машины ловит?
источник

S

Serjone in Delphi & Lazarus
Причём порт биндится, пакетсендер не может на него же забиндиться.
С другой машины не могу проверить - там один комп доступен только.
источник

G

Garik in Delphi & Lazarus
Serjone
Причём порт биндится, пакетсендер не может на него же забиндиться.
С другой машины не могу проверить - там один комп доступен только.
можно несколько ip адресов назначить в винде. с одного бродкаст кидай, с другого принимай, смотри разницу в вирешарке между пакетами от устройства и от своего бродкаста
источник

G

Garik in Delphi & Lazarus
источник

S

Serjone in Delphi & Lazarus
Garik
а свои с другой машины ловит?
у меня дома на двух компах работает
источник

S

Serjone in Delphi & Lazarus
блин.  Походу дошло
источник

S

Serjone in Delphi & Lazarus
у меня пакет с нулями. Они сразу строку заканчивают.
источник

G

Garik in Delphi & Lazarus
точно... пустые пакеты отсылают... ни разу бряка не додумался поставить? 🤨
источник

S

Serjone in Delphi & Lazarus
У меня там нет бряка. Я ж говорю, комп в Геленджике, на котором могу протестить работу.
источник