Ok, meinetwegen. Allerdings geht dieses Problem jetzt in eine ganz andere Richtung.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| function ConvertTo255(IP: string):string; var loop: integer; begin for loop := length(IP) downto 0 do if IP[loop] = '.' then begin result := copy(IP,1,loop)+'255'; break; end; end;
procedure SendPing(Info: TInfo); var BroadCastIP: string; Stream: TMemoryStream; begin BroadCastIP := Convertto255(Form1.idIPWatch1.LocalIP); Form1.UdpClient.Host := BroadCastIP; Stream := TMemoryStream.Create; Stream.Write(PING, SizeOf(PING)); Stream.Write(Info, SizeOf(Info)); Form1.UDPClient.SendStream(Stream); Stream.Free; end; |
Das ist ein Auszug aus meinem UDP-Chat, der ohne Server konzipiert ist. Jeder Client sendet regelmäßig einen Ping an die Broadcast-IP, die aufgrund der eigenen IP (vollkommen unfundiert) ermittelt wird. Es wird halt immer die eigene IP genommen und ans Ende eine 255 geschrieben.
Empfangen wird mit diesem Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.UDPServerInput(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); var Signal: integer; begin AData.Read(Signal, SizeOf(Signal)); If Signal = PING then inProcessPing(Abinding.PeerIP, AData) else if Signal = TEXT_MESSAGE then inProcessMessage(Abinding.PeerIP, Adata) else if Signal = SHUTDOWN then inRemoveClient(ABinding.PeerIP) else if Signal = SET_CURSOR then inSetCursor(ABinding.PeerIP, AData) else if Signal = SET_DESKTOP then inSetFalseDesktop; end; |
Das Kompatibilitätsproblem sieht nun so aus:
WinXP und Win9x können die Datenpakte senden, sprich Win9x-Rechner werden von anderen Rechner gesehen. Empfangen kann aber nur ein WinXP-Rechner. Worin kann nun das Problem liegen?
P.S.: @admins: evt Thread teilen und verschieben