serversocket-clientsocket, mantık kuramadım :(

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
aseka

Mesaj gönderen aseka »

--
En son aseka tarafından 18 Mar 2008 02:44 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
lom
Üye
Mesajlar: 135
Kayıt: 25 Nis 2006 02:37

Mesaj gönderen lom »

Kolay gelsin arkadaşlar. Ya bende basit olarak bi çalışma yapmak istiyorum. (Server-Client)DelphiOffline dan yardım alarak clientler den veri çekmeyi deniyorum. Ancak TServerSocket ve TClientSocket bileşenleri ile TcpClient, TcpServer ve TudpSocket bileşenleri INTERNET paletinde bulunması gerekiyo diyor ama ben bulamadım :oops: acaba farklı bi comp. kurmakmı gerekiyo ? Yardımcı olursanız çok sevinirim. Kolay gelsin
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@aseka

Not: işten yeni geldim, aradaki gecikme ondan.

- Sistemi doğru anlamışsınız. İfade etmeye çalıştığım şey aynen böyleydi.

- Diğer sorunuz için ise bir önceki mesajımda bildirdiğim gibi:
@mrmarman bir önceki mesajında yazdı:TCP sürekli bağlantıda olduğundan - IP numarası burada önemsiz. Sadece bilgi için...
Esas olan ServerIP'nin ve PORT numarasının bilinmesi ve vereceğin ClientID
- Server / ClientSocket ile bağlantı kurulması için gereken şart, Client olarak bağlanacak şube bilgisayarlarının SERVE'e ait IP nosunu bilmek zorunda olmalarıdır.

- SERVER ile bir kere bağlantı kurulduğunda, bu bağlantı kopana dek irtibat sürer. Yani SERVER geri cevap verirken mevcut bağlantıyı kullandığından CLIENT şubelerin IP nolarını bilmek zorunda değildir. Bunu anlatmaya çalışmıştım.

- Sadece diyalog söz konusu olduğundan kimin kime ne dediğini özelleştirmek için başına şube için belirlenen ID vasfı taşıyacak bir ifade ile direkt hedefe ulaştırma maksatlı idi. PROXY söz konusu olmasaydı IP nolarını bile ClientID olarak ayırt edici unsur olarak kullanabilirdiniz.

@lom

- TServerSocket, TClientSocket vb. bağlantı bileşenleri dclsockets paketinde ve isteğe bağlı olarak kurulmak üzere mevcut ancak aktif değildir. Siz bunu şöyle aktif edebilirsiniz.

- Delphi IDE'de Component / Install Packages seçimini yap
- Gelen ekranda ADD butonuna bas
- oradan klasör olarak delphi klasöründeki bin klasörünü bul
- listeden dclsockets yazan varsa şanslısın demektir. Onu seç ve kur.
- Bileşen paletinde Internet başlığı altında TServerSocket ve TClientSocket görünmesi lazım.
Resim
Resim ....Resim
aseka

Mesaj gönderen aseka »

--
En son aseka tarafından 18 Mar 2008 02:44 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Kullanırsınız neden kullanmayasınız. transparan proxy otomatik route eder ( Türk Telekomun yaptığı gibi ). Eğer kurum içindeki bir Proxy server'dan bahsediyorsanız bu durumda fireball ayarlarından kurum proxy'sinden gereken yönlendirmeyi yaparsanız çalışır. Buna VPN benzeri bir çözüm de iş görecektir.
Resim
Resim ....Resim
aseka

Mesaj gönderen aseka »

--
En son aseka tarafından 18 Mar 2008 02:45 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Istanbul'da çıkmasına bakmayın. GeoIP ile veritabanları farklı farklı olabiliyor. Yani IP bloğu bazı veritabanlarında İstanbul, bazılarında başka yer olabiliyor. Siz deneyip kendi test sonucunuzu irdeleyin. Mesela siz evinizdeki bilgisayardan server olun, arkadaşınız Client olarak bağlansın bağlandığınıda Remote Address olarak hangisi olduğunu net bir şekilde öğrenebilir, tersi işlem için kullanabilirsiniz. Kullanıp deneyebilirsiniz demek istedim.
Resim
Resim ....Resim
razman
Üye
Mesajlar: 9
Kayıt: 01 Eki 2007 08:47

merak ettigim bir olay

Mesaj gönderen razman »

mrmarman bey...
herşey algoritmik olarak iyi güzelde burda bnmde kafamı kemiren bir durum var server osman01 den gelen mesajı osman02 ye
yollayacak tamam. lakin osman02 router arkasındaki 10 makinadan biri ise modemine kendi lan ipisini port forwarding yapmadığı
sürece o ileti nasıl osman02 nin makinesine girecek?? bn bu işi port forwarding yapmadan çözmiyorum. ha ayrı Server ha ayrı
Client-Server. sonuçta port forwarding yapılıyor client tarafınada :(
araştırıyordumki arkadaşımızda benzerini sormuş. ben neyi atlıyorum acaba? sanki bu msn sunucusu clientine iletiyi
yollarken ona 80. porttan yolluyor. modemde geç diyor. kusursuzca ne olursa olsun mal şaşmıyor.
yada clientler iletiyi biz görmeden downloadmı ediyor sunucudan? :(
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- MSN 80 nolu porttan bilgi gönderirken iyi de cevap nasıl alıyor. MSN sunucusu Client IP'sine 80 nolu porttan geri bilgi gönderiyor ve bu IP'ye bağlı 100 makineye de aynı bilgi mi gidiyor ? Yok böyle bişey.

- Bence konuyu yanlış anladın ve her iki tarafa da SERVERSOCKET kurdun gibi geliyor bana. Böyle olmadığını söyle de okumaya devam et yoksa buradan sonra yazdıklarım hikaye kitabından iki paragraf olarak kalır.

- Server IP'sine bir clinet örneğin 1024 nolu port ile bağlanacak ise, bağlatı için Client makinede herhangi bir ROUTEing işlemine lüzum yok. Çünkü cevap geri dönüşleri mevcut bir bağlantı ile gerçekleşir.

- iki farklı kişinin telefon konuşmasına benzer. Bir kişi telefon numarasını bilmek zorunda ki karşı tarafı arayıp bağlantı kurmak zorunda. Ama diyalog başladığında diğer taraftaki kişinin irtibat kuran numarayı bilmek zorunluluğu yoktur. Mevzut bağlantıdan cevap verebilir, konuşabilir, soru sorabilir.

TServerSocket / TClientSocket bağlantısında tek taraftan bağlantı sağlanır ama bağlantı kopmadığı sürece aynı hat üzerinde çift taraflı veri alışverişi sağlanır.

- Kısaca

1. Bir Client -> Server'a bağlantı kurmak için Server'in IP'sine ihtiyacı vardır. Ayrıca gerekiyorsa Server'in ulaşılabilmesi için Route edilmesine ihtiyaç vardır.

2. Bir Client -> Server'a TEXT mesaj yollamak için aralarında önceden kurulmuş bir bağ ( connection ) olması lazım. Yukardaki işlem bu bağı kurar.

3. Bir Server -> herhangi bir Client'a TEXT mesaj yollamak için mevcut bağlantı listesinden ilgili Client'in index'ine yollar. Yani geri doğru IP bilmek zorunda değil çünkü zaten bağlılar.

- Client'lar için tek engel durum ki sen bence buna takıldın, çıkışları FIREWALL etmişseniz ve sadece bazıları serbest bırakmışsanız, çıkış yapacağınız PORT'u da serbest bırakmalısınız. Bu routing değildir.
Resim
Resim ....Resim
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Araya girmiş gibi olacam, yalnız
mrmarman yazdı:TCP sürekli bağlantıda olduğundan - IP numarası burada önemsiz.
mrmarman daha önce yazdı:OnClientDisconnect
'212.126.222.11' ile başlayan bağlantıyı listeden sil.
Proxy bi kenera, aynı evden 2 kişi bağlansa disconnect durumunda kim silinecek?

Zamanında çok çektim de bu TCP/IP'den, baştan yanlış başlamamak lazım..
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Connections[ idx ] olanı tabii ki..
Resim
Resim ....Resim
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

OnDisconnect'de disconnect olan socket'in index'ini alabiliyor muyduk?

ek olarak, connect ve disconnect durumlarında hangi client ile ilgili olduğunu anlmak için Socket.RemoteAddress dediğimde ip'sini göremediğim bilgisayarlar da olmuştu. bağlantıyı nasıl kuruyorlardı anlamıyordum :lol:

SocketHandle üzerinden çözüme gitmiştim, takılan olursa ayrıntıları yazarım.
En son ulu coder tarafından 08 Ara 2007 12:35 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
razman
Üye
Mesajlar: 9
Kayıt: 01 Eki 2007 08:47

Mesaj gönderen razman »

80. port ve download işi tabiki işin mübalasıydıda....

ben biraz karmaşık düşünmüşüm. saolasın anlaşıldı şimdi
beni düşündüren kısım, zaten tabiatı gereği kendiliğinden çözülüyormuş..

yani ben serverin hattına baglanmış isem aramızda bir yol oluşuyor zaten.
bu işin geriye dönecek iletisi artık var olan bu traceyi kullanıyor buna modem felanda karışamıyor.(firewallı dışında) ve direk ilgili client uygulamasının değişkenine iletiliyor vs ..vs.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

hocam en başa döndürme bizi. Sen basit bir döngü kurarsın, Connection sayın kadar. Sonra bağlantısı olanlara KİMSİN: sorusu gönderirsin hemencecik yeni ID listen oluşur...

ekleme // bu cevap @ulu coder içindi
En son mrmarman tarafından 08 Ara 2007 12:37 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Resim
Resim ....Resim
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

mrmarman yazdı:hocam en başa döndürme bizi. Sen basit bir döngü kurarsın, Connection sayın kadar. Sonra bağlantısı olanlara KİMSİN: sorusu gönderirsin hemencecik yeni ID listen oluşur...
İletişimi bu kadar kullanmak sizin için sorun değilse, eyvallah...
Cevapla