Clientsocket Serversocket Yardım

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Commandx
Üye
Mesajlar: 183
Kayıt: 01 Oca 2008 05:34

Clientsocket Serversocket Yardım

Mesaj gönderen Commandx »

Arkadaşlar birtane Chat projesi yaptım herşey tamam
yalnız client server socketlerinde bir durum var

ben chat sunucusu için modemin 1555 portunu açtım
clientlerede 1555 port atadım
kullandığım serversocket Chat sunucusu ve Admin olacak...
client socketler ise kulanıcılar olacak
bağlantı olayında 1 kişi ile sorun yaşamıyorum
ama bağlantıda 2 kişi client socket ile bendeki serversocketin 1555 portuna bağlandığında daha önce kim bağlanmışsa onun yazdıklarını görebiliyorum
diğerleri (clientler) bağlanamadı hatası alıyor
bunun sebebi nedir ?
serversocket portu , sadece birtane Clientin bağlanmasınamı izin veriyor acaba? ondanmıdır?
eğer bu yüzdense bunun çözümü nedir?

serversocket sadce 1 clientlemi bağlantı kurabiliyor ?
varsa componenti nedir
yada bu işin çözümü ne olabilir,
aklımda şimdilik timere ekleyeceğim clients IP disconnect yaptırma çözümü var ama bakalım nasıl çıkacam bu işin içinden
teşekkürler...
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
Kullanıcı avatarı
Search
Üye
Mesajlar: 74
Kayıt: 01 Oca 2008 01:03
Konum: Konya

Mesaj gönderen Search »

Arkadasım donguyle halledebilirsin

Kod: Tümünü seç

var  
   i:integer; 
   text : string; 
begin  
   for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do 
begin   
   with ServerSocket1.Socket.Connections[i] do    
begin    
   text := ReceiveText;     
   if text <> '' then     
begin       
   Memo1.Lines.Add(RemoteAddress + ' sends :';      
   Memo1.Lines.Add(text);    
end;   
  end;  
    end; 
      end;
procedure TForm1.FormCreate(Sender: TObject);
begin
showmessage('Dehanın %1 i ilham %99u terdir.');
end;
end.
Kullanıcı avatarı
Commandx
Üye
Mesajlar: 183
Kayıt: 01 Oca 2008 05:34

Olmuyor ya

Mesaj gönderen Commandx »

arkadaşlar hata nerde ben bulamadım
Server socketin send text özelliğini kullanarak clientsockete veri göndermek istiyorum ama clientsocket alıp memo1e yazması gerekiyor onuda yapmıyor
birde yukarıdaki döngü kodlarını ekleyerek denedim
çoklu clientler yine bağlanmıyor
prosedür önceliği diye birşey varmı Delphide
yani önce yazılan prosedürün daha erken işletilmesi gibi bir durumda sonra gelen kodların işlevsel olma özelliği
delphinin dezavantajı olabilir...


Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    Memo1: TMemo;
    Button2: TButton;
    Edit2: TEdit;
    Memo2: TMemo;
    Button3: TButton;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Button3Click(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
clientsocket1.Host:=edit1.Text;
clientsocket1.Active:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
clientsocket1.Socket.SendText(edit2.Text);
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
serversocket1.Port:=strtoint('1555');
serversocket1.Active:=true;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
   i:integer;
   text : string;
begin
   for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do
begin
   with ServerSocket1.Socket.Connections[i] do   
begin
   text := ReceiveText;     
   if text <> '' then
begin
   Memo2.Lines.Add(text);

end;
  end;
    end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
serversocket1.Active:=true;
serversocket1.Socket.SendText(edit3.Text) ;
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
memo1.lines.add(socket.ReceiveText());;
end;

end.
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
Cevapla