Ładny brzuch
Witam :)
Zacznijmy od Klienta:
Na formatce mam TClientSocket - (Klient), Memo - (Odbieranie Wiad.), Edit - (Wysylanie Wiad.).
Dobrze, pod Buttonik do wysylania wiadomosci mam taki kodzik podpiety:
ClientSocket1.Socket.SendText(Edit1.Text); Memo1.Lines.Add('Ja: '+Edit1.Text); Edit1.Clear; To oczywiscie dziala (Serwer odbiera wiadomosc).
W OnRead ClientSocket1 dalem:
Memo1.Lines.Add(Socket.ReceiveText);
Przejdzmy teraz do Serwera:
W OnClientRead mam:
Memo1.Lines.Add(Socket.ReceiveText);
W buttonku wyslij mam:
ServerSocket1.Socket.SendText(Edit1.Text); Memo1.Lines.Add('Ja: '+Edit1.Text); Edit1.Clear;
No i nie dziala wysylanie z Serwerka do Klienta (Klient nie odbiera wiadomosci).
A daloby sie to zrobic tak?:
To chyba marzenia ? :P :rolleyes:
Pozdrawiam.
wiem e na strone vcprogramming czy co takiego to byo, bo sam z tamt to braem, a z pamici to co takiego:
for i:=0 to serwersocket1.socket.activeconnections.count-1 do begin foo foo foo :P end;
jeszcze link, to co chcesz jest na samym dole:
http://www.unit1.pl/...35,podglad.html
Uytkownik krajew4 edytowa ten post 18 kwiecie 2006, 11:36
Co do drugiego punktu to nick moe by odrazu z wiadomocia.
teks := Nick + ': ' + msg;
I pniej wysya do serwera a serwer rozsya do klientw :D
Ja tylko powiem, e w ktrym ekspercie byo jak napisa prosty czat :)
Ale to bya chyba technologia Flash ;)
Ale to bya chyba technologia Flash ;)
Dobra robie tak:
ServerSocket1.Socket.Connections[ServerSocket1.Socket.ActiveConnections-1].SendText(Edit1. Text); // W Edit1 zapisuje wiadomosc ktora dochodzi i serwer ma za zadanie ja rozeslac po wszystkich klientach.
Jak zrobie tak jak powyzej to jest niby wszystko ok, tylko jak drugi uzytkownik sie polaczy to juz do danego (drugiego) uzytkownika nie wysyla.
Jesli zrobie:
ServerSocket1.Socket.Connections[ServerSocket1.Socket.ActiveConnections].SendText(Edit1. Text);
To wywali mi fatal error: ListIndex of bounds(2).
W zmiennej i zapisuje ile jest uzytkownikow, to jak zrobie:
ServerSocket1.Socket.Connections[i].SendText(Edit1.Text)
Wywali mi ten sam fatal error. Bo jesli zrobie -1 to nie wysle do jednego :(
Licze na pomoc.
...
mam tak:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var b : integer; begin Edit1.Text := Socket.ReceiveText; Memo1.Lines.Add(Edit1.Text); for b:=0 to serversocket1.socket.activeconnections.count-1 do begin ServerSocket1.Socket.Connections[b].SendText(Edit1.Text); Edit1.Clear; end; end; end.
Wywala mi ten blad:
Record, object or class type required. :(
Edit:
Juz sobie poradzilem, dziekuje za pomoc !!!!!! Bardzo sie przydala!
Uytkownik Shooter edytowa ten post 18 kwiecie 2006, 15:02
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Zacznijmy od Klienta:
Na formatce mam TClientSocket - (Klient), Memo - (Odbieranie Wiad.), Edit - (Wysylanie Wiad.).
Dobrze, pod Buttonik do wysylania wiadomosci mam taki kodzik podpiety:
ClientSocket1.Socket.SendText(Edit1.Text); Memo1.Lines.Add('Ja: '+Edit1.Text); Edit1.Clear; To oczywiscie dziala (Serwer odbiera wiadomosc).
W OnRead ClientSocket1 dalem:
Memo1.Lines.Add(Socket.ReceiveText);
Przejdzmy teraz do Serwera:
W OnClientRead mam:
Memo1.Lines.Add(Socket.ReceiveText);
W buttonku wyslij mam:
ServerSocket1.Socket.SendText(Edit1.Text); Memo1.Lines.Add('Ja: '+Edit1.Text); Edit1.Clear;
No i nie dziala wysylanie z Serwerka do Klienta (Klient nie odbiera wiadomosci).
A daloby sie to zrobic tak?:
- lKlient1 wysyla wiadomosc do serwera.
llSerwer wysyla wiadomosc do wszystkich klientow.
llWszyscy polaczeni z serwerem widza co klient1 napisal.l
To chyba marzenia ? :P :rolleyes:
Pozdrawiam.
wiem e na strone vcprogramming czy co takiego to byo, bo sam z tamt to braem, a z pamici to co takiego:
for i:=0 to serwersocket1.socket.activeconnections.count-1 do begin foo foo foo :P end;
jeszcze link, to co chcesz jest na samym dole:
http://www.unit1.pl/...35,podglad.html
Uytkownik krajew4 edytowa ten post 18 kwiecie 2006, 11:36
Co do drugiego punktu to nick moe by odrazu z wiadomocia.
teks := Nick + ': ' + msg;
I pniej wysya do serwera a serwer rozsya do klientw :D
Ja tylko powiem, e w ktrym ekspercie byo jak napisa prosty czat :)
Ale to bya chyba technologia Flash ;)
Ale to bya chyba technologia Flash ;)
Dobra robie tak:
ServerSocket1.Socket.Connections[ServerSocket1.Socket.ActiveConnections-1].SendText(Edit1. Text); // W Edit1 zapisuje wiadomosc ktora dochodzi i serwer ma za zadanie ja rozeslac po wszystkich klientach.
Jak zrobie tak jak powyzej to jest niby wszystko ok, tylko jak drugi uzytkownik sie polaczy to juz do danego (drugiego) uzytkownika nie wysyla.
Jesli zrobie:
ServerSocket1.Socket.Connections[ServerSocket1.Socket.ActiveConnections].SendText(Edit1. Text);
To wywali mi fatal error: ListIndex of bounds(2).
W zmiennej i zapisuje ile jest uzytkownikow, to jak zrobie:
ServerSocket1.Socket.Connections[i].SendText(Edit1.Text)
Wywali mi ten sam fatal error. Bo jesli zrobie -1 to nie wysle do jednego :(
Licze na pomoc.
...
mam tak:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var b : integer; begin Edit1.Text := Socket.ReceiveText; Memo1.Lines.Add(Edit1.Text); for b:=0 to serversocket1.socket.activeconnections.count-1 do begin ServerSocket1.Socket.Connections[b].SendText(Edit1.Text); Edit1.Clear; end; end; end.
Wywala mi ten blad:
Record, object or class type required. :(
Edit:
Juz sobie poradzilem, dziekuje za pomoc !!!!!! Bardzo sie przydala!
Uytkownik Shooter edytowa ten post 18 kwiecie 2006, 15:02