Napisałem prosty program (komponent INDY) do odbierania danych z mikrokontrolera esp32 program działa poprawnie ale po sprawdzeniu komunikacji w Wireshark okazało się że server komunikuje się i używa losowego portu
procedure TForm1.Button1Click(Sender: TObject);
begin
IdUDPClient1.Send('192.168.4.1',4444,'00FFR01010000');
end;
Wysyłanie zapytania do mikrokontrolera
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Clear;
Memo1.Clear;
IdUDPClient1.Active:=True;
IdUDPServer1.DefaultPort :=5555;
IdUDPServer1.Active := true;
end;
procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
const AData: TIdBytes; ABinding: TIdSocketHandle);
var
sText: string;
begin
Memo1.Lines.Add(ABinding.PeerIP);
SetString(Stext, PAnsiChar(@AData[0]), Length(AData));
Form1.Memo1.Lines.Add(sText);
end;
Odbieranie komunikacji z mikrokontrolera
Frame 27: 57 bytes on wire (456 bits), 57 bytes captured (456 bits) on interface \Device\NPF_{E3F3B902-E81E-44FD-AF4B-9874D3D2B269}, id 0
Ethernet II, Src: CloudNet_9e:3d:ef (f8:89:d2:9e:3d:ef), Dst: Espressi_3c:ee:99 (94:3c:c6:3c:ee:99)
Internet Protocol Version 4, Src: 192.168.4.2, Dst: 192.168.4.1
User Datagram Protocol, Src Port: 50680, Dst Port: 4444
Source Port: 50680
Destination Port: 4444
Length: 23
Checksum: 0x628c [unverified]
[Checksum Status: Unverified]
[Stream index: 0]
[Timestamps]
UDP payload (15 bytes)
Data (15 bytes)
Dlaczego Source Port: to port 50680 a nie 5555 tak jak ja chciałem ?
Dodam ze aplikacja napisana przez producenta na tym samym komputerze komunikuje się na poprawnych portach 4444 i 5555