serversocket-clientsocket, mantık kuramadım :(
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 69
- Kayıt: 17 Haz 2003 12:14
- Konum: Alanya
- İletişim:
serversocket-clientsocket, mantık kuramadım :(
Merhabalar tekrar,
serversocket - clientsocket uygulamam var. Sadece text transferi varsayıyorum.
Aynı ağda çalışırsa sorun yok zaten. Ancak
makinelerden internet üzerinden haberleşeceklerse server-socket uygulaması ile text transferini nasıl yapabilirim? ya da bu işlem için başka bir component mi kullanmam gerekir? eğer evetse ne kullansam bu işi görür?
serversocket - clientsocket uygulamam var. Sadece text transferi varsayıyorum.
Aynı ağda çalışırsa sorun yok zaten. Ancak
makinelerden internet üzerinden haberleşeceklerse server-socket uygulaması ile text transferini nasıl yapabilirim? ya da bu işlem için başka bir component mi kullanmam gerekir? eğer evetse ne kullansam bu işi görür?
...[ at, avrat, delphi ]...
- İşin içine internet girince, kullanmak istediğin PORT hangisi ise o PORT numarasının diyalog kuracak her iki taraf için Modemlerin üzerinden ROUTE edilmesi gerekir.
- Mesela ben Zoom X5 ADSL modem kullanıyorum . Üzerinde 4 adet LAN girişi var. Bu demek oluyor ki 4 adet PC bağlabiliyor. Şimdi internet tarafından benim IP numarama atıyorum 1024 nolu porttan bilgi gelse, bu bağlı 4 PC'den hangisini muhatap kabul edecek ? İşte ROUTE işlemi dediğimiz şey, Modem Konsol ayarlarından yapılandırılan, belli portların hangi IP'ye yönlendirileceğinin bildirilmesidir.
- Ayrıca bir de Windows'daki Firewall ayarlarından ilgili port serbest bırakılmalı. Bunu söylememe bile gerek yok, zaten yapıyorsundur
- Mesela ben Zoom X5 ADSL modem kullanıyorum . Üzerinde 4 adet LAN girişi var. Bu demek oluyor ki 4 adet PC bağlabiliyor. Şimdi internet tarafından benim IP numarama atıyorum 1024 nolu porttan bilgi gelse, bu bağlı 4 PC'den hangisini muhatap kabul edecek ? İşte ROUTE işlemi dediğimiz şey, Modem Konsol ayarlarından yapılandırılan, belli portların hangi IP'ye yönlendirileceğinin bildirilmesidir.
- Ayrıca bir de Windows'daki Firewall ayarlarından ilgili port serbest bırakılmalı. Bunu söylememe bile gerek yok, zaten yapıyorsundur
-
- Üye
- Mesajlar: 69
- Kayıt: 17 Haz 2003 12:14
- Konum: Alanya
- İletişim:
-
- Üye
- Mesajlar: 69
- Kayıt: 17 Haz 2003 12:14
- Konum: Alanya
- İletişim:
O zaman sorun yok. Tüm trafik o server tarafından yürütülecek. Sen sadece sunucu bilgisayar için modem route işlemi ayarı yapacaksın.
- Client'lar (istemciler) sunucu bilgisayara bağlanacaklar, sonra bir client başka bir client'a mesaj atacaksa, bunu sunucu bilgisayara gönderecekler, sunucu bilgisayar kaynak client'ın adına bu mesajı hedef client'a iletecek.
- Client'lar (istemciler) sunucu bilgisayara bağlanacaklar, sonra bir client başka bir client'a mesaj atacaksa, bunu sunucu bilgisayara gönderecekler, sunucu bilgisayar kaynak client'ın adına bu mesajı hedef client'a iletecek.
-
- Üye
- Mesajlar: 69
- Kayıt: 17 Haz 2003 12:14
- Konum: Alanya
- İletişim:
- Tam da böyle birşey. Alt IP tanımlamak zorunda değilsin. Yani IP formatında olmak zorunda değil. Bunun yerine unique (tekil) olan bir kod yeterli. Mesela Osman_001 Osman_007 gibi. Bağlanan Client eğer IP nosu statik ise ilgili Internet IP'sini Osman_001 olarak verirsin. Ya da statik olmayan IP varsa onun yerine Client "ben Osman_001 'im" diye mesajında belirtir. Sen de listeye alırsın.
- Sonuç olarak sunucuya bağlanan her client bir ClientID alacak. Bu ClientID dilersen client bilgisayarlara göre özelleştirebilir, sadece birbirini görmesi gerekenleri gruplayabilirsin. Grup içindeki bir ClientID devrede ise o zaman aynı grupdaki diğer client'lar için yayın yaparsın "şu ClientID online oldu" gibisinden. Sonra bir client, Online olan diğer Client'e belirleyeceğin protokol vasıtası ile mesaj yollayacak.
- Her client bir server olmayacak. Bu sana külfet getirir. İlk mesajımda verdiğim modem ayar vs. konularında yani...
- Sonuç olarak sunucuya bağlanan her client bir ClientID alacak. Bu ClientID dilersen client bilgisayarlara göre özelleştirebilir, sadece birbirini görmesi gerekenleri gruplayabilirsin. Grup içindeki bir ClientID devrede ise o zaman aynı grupdaki diğer client'lar için yayın yaparsın "şu ClientID online oldu" gibisinden. Sonra bir client, Online olan diğer Client'e belirleyeceğin protokol vasıtası ile mesaj yollayacak.
- Her client bir server olmayacak. Bu sana külfet getirir. İlk mesajımda verdiğim modem ayar vs. konularında yani...
-
- Üye
- Mesajlar: 69
- Kayıt: 17 Haz 2003 12:14
- Konum: Alanya
- İletişim:
Sunucu Projesi yapılandırması
Modem Route ayarları yapıldı
IP eğer statik değilse bu IP'yi internette bir yere basit bir INI dosyası olarak upload edersiniz. Client'ler bu IP'yi bu siteden indirip kullanırlar. Kendi içinde basit bir DNS çözümü olur.
İnternet IP adresini öğrendik ve http://www.osman.com.tr/IP.INI dosyası olarak gönderdik.
ONLINE ( IP:81.213.206.200 : Port 1024)
Client 01 projesinde olacaklar.
CONST
ClientID = 'Osman_001';
- Internetten http://www.osman.com.tr/IP.INI dosyasını indirdik IP adresini öğrendik.
ServerAddress := IP;
ServerPort := 1024
Connected := true;
SendText( 'BEN:'+CilentID );
ServerProjesi
'BEN:' ile başlayan metni alınca bunu bir Listeye aktarma görevi var. zaten Client'ın IP adresini öğrenmek için komut var.
OnClientRead
BEN: ile başlıyorsa iki noktadan sonraki kelime ClientID'sidir.
ClientAddress: 212.126.222.11 olduğunu öğrendik.
'212.126.222.11' (RemoteAddress) + '-' + 'Osman_001'
OnClientDisconnect
'212.126.222.11' ile başlayan bağlantıyı listeden sil.
Tüm Socket.Connections içinde döngüye girip herkese Osman_001'in bağlandığını bildirmek için SendText('YENİ:Osman_001'); yolarsın. Böylece bağlı Client'lar Osman_001'in bağlı olduğunu bilir.
Osman_001 -> Osman_002'ye mesaj atacaksa Server'a şöyle mesaj atar.
Server bu mesajı alınca da Osman_002'yi listede arar ve bulunca bağlantılar listesinden onunkini bulur. Sonra da
der.. Bu mesajın Osman_001'den geldiğini Osman_002 anlar ancak ekranda sadece mesaj metnini görecek şekilde baştaki kısımları kırparsın.
- Burada mesajla gönderilen ilk kısımlar yazılımın anlayacağı şekilde kendine göre tasarlayacağın mesaj protokolüdür. Ben açıklayıcı olsun diye geniş geniş yazdım. Her byte değerli olduğundan protokol içeriğini kısa tutmalısın. Mesela
01 kimliğim
02 mesajla
03 ses yolla gibi..
01Osman_001
02Osman_002-Merhaba
gibisinden kısaltabilirsin. Sonuçta bu protokolü yorumlayacak olan yine bir programdır.
- Bundan bir sonuç çıkartabilirsin artık.
Modem Route ayarları yapıldı
IP eğer statik değilse bu IP'yi internette bir yere basit bir INI dosyası olarak upload edersiniz. Client'ler bu IP'yi bu siteden indirip kullanırlar. Kendi içinde basit bir DNS çözümü olur.
İnternet IP adresini öğrendik ve http://www.osman.com.tr/IP.INI dosyası olarak gönderdik.
ONLINE ( IP:81.213.206.200 : Port 1024)
Client 01 projesinde olacaklar.
CONST
ClientID = 'Osman_001';
- Internetten http://www.osman.com.tr/IP.INI dosyasını indirdik IP adresini öğrendik.
ServerAddress := IP;
ServerPort := 1024
Connected := true;
SendText( 'BEN:'+CilentID );
ServerProjesi
'BEN:' ile başlayan metni alınca bunu bir Listeye aktarma görevi var. zaten Client'ın IP adresini öğrenmek için komut var.
OnClientRead
BEN: ile başlıyorsa iki noktadan sonraki kelime ClientID'sidir.
ClientAddress: 212.126.222.11 olduğunu öğrendik.
'212.126.222.11' (RemoteAddress) + '-' + 'Osman_001'
OnClientDisconnect
'212.126.222.11' ile başlayan bağlantıyı listeden sil.
Tüm Socket.Connections içinde döngüye girip herkese Osman_001'in bağlandığını bildirmek için SendText('YENİ:Osman_001'); yolarsın. Böylece bağlı Client'lar Osman_001'in bağlı olduğunu bilir.
Osman_001 -> Osman_002'ye mesaj atacaksa Server'a şöyle mesaj atar.
Kod: Tümünü seç
Sendtext('Mesajla:Osman_001->Osman_002=Merhaba dostum :) ');
Kod: Tümünü seç
Connections[10].SendText := 'MESAJ:Osman_001->Merhaba dostum :)';
- Burada mesajla gönderilen ilk kısımlar yazılımın anlayacağı şekilde kendine göre tasarlayacağın mesaj protokolüdür. Ben açıklayıcı olsun diye geniş geniş yazdım. Her byte değerli olduğundan protokol içeriğini kısa tutmalısın. Mesela
01 kimliğim
02 mesajla
03 ses yolla gibi..
01Osman_001
02Osman_002-Merhaba
gibisinden kısaltabilirsin. Sonuçta bu protokolü yorumlayacak olan yine bir programdır.
- Bundan bir sonuç çıkartabilirsin artık.
-
- Üye
- Mesajlar: 69
- Kayıt: 17 Haz 2003 12:14
- Konum: Alanya
- İletişim:
-
- Üye
- Mesajlar: 69
- Kayıt: 17 Haz 2003 12:14
- Konum: Alanya
- İletişim: