UDPClient - problem

0

Pisze program, czacik, do programu oparty na UDPClient Server.
Poniżej wkleje kod.
Niestety jest problem, nie widac rozmow uzytkownikow, tak jakby sien ie laczyl ten program w sieci , z drugim... nie wiem co robic ? gdzie ejst blad prosze o pomoc !!!

moje GG: 6404067

Dzieki z gory za pomoc !!

function GetIPAddr:String;
var p:PHostEnt;
    s:array[0..128] of char;
    p2:pchar;
begin
 //Pobieramy nazwę komputera
 GetHostName(@s, 128);
 p := GetHostByName(@s);
 //Pobieramy jego adres IP
 p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
 Result:=String(p2);
 end;

function GetBroadcastAddr:String;
 var s,s2:String;
 begin
  {Taka prymitywna - mialem malo czasu}
  s:=GetIPAddr;
  s2:='';
  s2:=s2+copy(s,1,Pos('.',s));
  delete(s,1,Pos('.',s));
  s2:=s2+copy(s,1,Pos('.',s));
  delete(s,1,Pos('.',s));
  s2:=s2+copy(s,1,Pos('.',s));
  delete(s,1,Pos('.',s));
  s2:=s2+'255';
  Result:=s2;
 end;


procedure TForm1.FormCreate(Sender: TObject);
var s:String;
var wVersionRequested:WORD;
    wsaData:TWSAData;
begin
//Ładujemy bibliotekę Winsock
 wVersionRequested := MAKEWORD(1, 1);
 WSAStartup(wVersionRequested, wsaData);

S:=Nick.Text;
if InputQuery('Podaj swojego nicka','Wprowadź nicka',s) then Nick.Text:=s;
ip.Text:=GetIPAddr;
UDPClient.Host:=GetBroadcastAddr;
UDPClient.Port:=5000;
UDPClient.Active:=True;
UDPServer.DefaultPort:=5000;
UDPServer.Active:=True;
UDPCLient.Broadcast(Format('Uzytkownik %s dołączył o %s ',[Nick.Text, TimeToStr(Now)]),5000);
end;

procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then { #13 - enter}
 begin
  Key:=#0;

  UDPCLient.Broadcast(Format('[%s] %s',[Nick.Text,Edit.Text]),5000);
  Edit.Text:='';
  Edit.SetFocus;
 end;
end;

procedure TForm1.UDPServerUDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var buff:Array[0..1023] of Char;
begin
 AData.Read(buff,SizeOf(buff));
 Memo.Lines.Add(String(buff));
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin

 //Zwalniamy Winsock
 WSACleanup;

end;
0

oczywiście wiesz, że to ma szanse zadziałać tylko na lanie?

imho kompletnie nie tędy droga. musisz postawić serwer na komputerze o znanym i stałym IP. każdy klient będzie nawiązywał z tym serwerem połączenie (TCP) i wysyłał mu to co użytkownik napisał, oraz będzie odczytywać to co serwer przyśle. z kolei serwer będzie rozsyłać pomiędzy wszystkich klientów przychodzące dane.
mniej-więcej w ten sposób działają praktycznie wszystkie programy typu gg.

0

@ŁF: tylko, że on nie chce napisać gg, a czat po lanie. Wg mnie UDP jest w tym momencie łatwiejsze, bo nie ma problemu z serwerem.
BTW. zastanowiłbym się nad użyciem broadcastu - u mnie w szkole kompletnie nie działał, nie wiedzieć czemu :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1