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;