Son derece güvenilir ticaret/sinyal kopyalayıcı (ideoloji ve gelişme tartışması) - sayfa 7

 

TAMAM. O zaman çalışan bir model olarak bir soket bağlantısı almayı öneriyorum.

Схема работы синхронизатора:

- sunucu, istemcilerle kalıcı soket bağlantıları oluşturacak
- ana müşteri, işlem etkinliği sırasında emirlerinin mevcut durumunu gönderir
- sunucu bu dosyayı kaydeder ve hemen diğer tüm istemcilere gönderir (zaten bir soket bağlantısı vardır).
- müşteri dosyayı alır ve alınan verilere göre siparişlerin durumunu değiştirir
- Ayrıca, yeni bir istemci bağlandığında, ona en son kaydedilen ana dosya gönderilir. (ilk senkronizasyon için)

Böyle bir sistemin ana avantajı trafik tasarrufudur :
- müşteriden sürekli talepler gerekli değildir. Uygunluk durumuna göre sunucudan kabul edecektir.
- benzer şekilde, ana istemci yalnızca değişiklikler algılandığında veri gönderir

İletişim kaybı koruması
- istemci, sunucuyla olan bağlantıyı kontrol etmek için her 5 saniyede bir (örneğin, 2 bayt) bir "Kalp Atışı" paketi gönderir
- başarısız gönderme durumunda (yanıt yok), istemci bağlantıyı yeniden başlatır
- sunucu aynı şeyi yapar. İstemciden 10 saniye içinde herhangi bir kontrol olmazsa, soket bağlantısı kapatılır.


Bu bağlantının herhangi bir dezavantajı var mı?
- örneğin, mümkün olan maksimum soket bağlantısı sayısı nedir?
 
sergeev :

İletişim kaybı koruması
- istemci, sunucuyla olan bağlantıyı kontrol etmek için her 5 saniyede bir (örneğin, 2 bayt) bir "Kalp Atışı" paketi gönderir

Bağlantı TCP/IP aktarım protokolü üzerinden ise bu asla yapılmaz, çünkü bağlantı soket düzeyinde otomatik olarak gerçekleştirilir, yani. işletim sistemi. Bağlantı kesilmesi durumunda, istemcide bir istisna tetiklenir ve bu durumda tam olarak ne yapılması gerektiğini işleyicisinde belirtmek gerekir. Sunucuya gelince, lambayı önemsiyor çünkü. müşteri düştüyse, bunlar zaten müşterinin sorunlarıdır.

sergeev :


- örneğin, mümkün olan maksimum soket bağlantısı sayısı nedir?
Bir IP adresindeki bir ana bilgisayar için, bazıları zaten diğer İnternet bağlantıları tarafından işgal edilmiş olan maksimum 65536 bağlantı noktası kullanabilirsiniz. Pekala, bir port her zaman dinleme için bir sunucu soketi tarafından işgal edilecektir.
 
Reshetov :

Bağlantı kesilmesi durumunda, istemcide bir istisna tetiklenir ve işleyicisine yazılması gerekir.

ne istisnasından bahsediyorsun
WS2_32.dll'den bahsediyorum. Sıradan Berkeley soketleri (eşzamansız bir versiyonda da olsa). Herhangi bir istisna görmedim. Bir kilitlenmeyi yalnızca göndermeyi/almayı deneyerek tespit edebilirsiniz.

Toplamda, bir IP için bir ana bilgisayarda, bazıları zaten diğer İnternet bağlantıları tarafından işgal edilecek olan maksimum 65537 bağlantı noktası kullanabilirsiniz.
Duc, sadece bir limana ihtiyacın var.
ve bu porta kaç tane soket bağlantısı asılabilir?
 
sergeev :

ne istisnasından bahsediyorsun
WS2_32.dll'den bahsediyorum. Sıradan Berkeley soketleri (eşzamansız bir versiyonda da olsa). Herhangi bir istisna görmedim. Bir kilitlenmeyi yalnızca göndermeyi/almayı deneyerek tespit edebilirsiniz.

Duc, sadece bir limana ihtiyacın var.
ve bu porta kaç tane soket bağlantısı asılabilir?

Bir bağlantı noktasına yalnızca bir bağlantı takılır. İstemcinin bağlanabilmesi için hangi IP'de ve sunucuda tahsis edilen port numarasını bilmesi gerekir. Veya IP yerine bir alan adı belirtebilirsiniz, soket bunu DNS aracılığıyla bir IP adresine çözecektir.

Sunucu soketi, istemcilerden bir bağlantı için bu en özel bağlantı noktasını dinliyor. İstemci yasal olduğunda, soket, üzerinde iletişimi sürdürmek için ücretsiz olanlardan oluşan havuzdan kalıcı bir bağlantı için başka bir bağlantı noktası tahsis eder. Bundan sonra, kalıcı bağlantı noktası yeniden serbest bırakılır ve diğer istemcilerden gelen bağlantıları dinler.

TCP/IP aktarım protokolü kullanılarak bağlantı bu şekilde yapılır. Bütün bunlar soket seviyesinde yapılır, yani. protokolü programlamanız gerekmez - standarttır ve işletim sistemindeki paylaşılan kitaplığa zaten programlanmıştır.

 
Geliştirmek için yararlı olabilir.
Dosyalar:
kopir.zip  397 kb
 
Reshetov :
İstemci yasal olduğunda, soket, üzerinde iletişimi sürdürmek için ücretsiz olanlardan oluşan havuzdan kalıcı bir bağlantı için başka bir bağlantı noktası tahsis eder.

Yuri, boyanmış temel bilgiler için teşekkürler, ama hepsi yerinde değil. Bilgi vermiyorsun.

ve vurgulanan genellikle saçmalık, üzgünüm. Belki liman kavramını iki farklı biçimde uygularsınız, ancak o zaman kabul edilen kavramlarda çalışmak daha iyidir.

 
SEVER11 :
Geliştirmek için yararlı olabilir.

olası olmayan. profesyonel olmayan.
 
sergeev :


ve vurgulanan genellikle saçmalık, üzgünüm. Belki liman kavramını iki farklı biçimde uygularsınız, ancak o zaman kabul edilen kavramlarda çalışmak daha iyidir.

Dedikleri gibi, bunlar sizin kişisel sorunlarınız, liman kavramını nasıl uygulayacaksınız. TCP/IP protokolünde portların nasıl kullanıldığını az önce açıkladım. Bir kez daha, sadece protokolün standart olduğunu tekrar edeceğim, yani. Ben icat etmedim.

O zaman kendin çöz, bir şekilde bensiz.

İyi şanlar!

 
sergeev

Ve ağ boyutunun sırası nedir, kaç müşterinin 1000, 100, 10, 1 olması gerekiyor?

Ve sonuçta, sunucunuz gerçekten binlerce istemciyle trafiği kesiyor.

 
Urain :

Ve ağ boyutunun sırası nedir, kaç müşterinin 1000, 100, 10, 1 olması gerekiyor?

Sonuçta, sunucunuz gerçekten binlerce istemciyle trafiği kesiyor.


mesele bu. düşünmeye çalıştığım şey. Tabii ki, başlangıçta daha fazla ölçeklenebilirlik yatırımı yapmanız gerekiyor. Yani amaç 1000-h olarak yapmaktır. Ve birimlerin daha sonra kullanması önemli değil.

Bu yüzden şimdi seçmeye ve karar vermeye çalışıyorum - ya hız ya da soketli mikro trafik. Veya müşterilerin yeni bir bilgi bölümü için sürekli olarak swotting üzerinde http ve önemli trafik.