lostyazilim
tr.link

Socket İşlemleri Hatası

4 Mesajlar 744 Okunma
acebozum
tr.link

anesteziker anesteziker WM Aracı Kullanıcı
  • Üyelik 20.09.2016
  • Yaş/Cinsiyet 40 / E
  • Meslek sağlık
  • Konum Ankara
  • Ad Soyad U** K**
  • Mesajlar 45
  • Beğeniler 4 / 4
  • Ticaret 0, (%0)
Merhaba,

ABB Marka PLC cihazım var, buna UDP üzerinden socket bağlantısı ile veri gönderip alıyorum. Sayfa üzerinde hazırladığım görseller ve inputlar var. Butonlarla 192.168.1.3:3366 üzerinden komut gönderiyorum ve sayfadaki görseller aynı ip üzerinden çekiyorum ve görselleri if ile değiştiriyorum. Cihazın ayarı 3366 portundan gönder/al şeklinde. Görselleri javascript ile 200ms.'de bir yeniliyorum. Böylece cihazda gönderdiğim komutlar görsellere yansımış oluyor. Sorunum şu;

Her 200ms'de bir yenileyen sayfada komut post ettiğimde port sürekli açık kaldığı için arada "Warning: socket_bind(): unable to bind address [98]: Address already in use in /volume1/web/savas/islem.php on" hatası dönüyor. Port sürekli meşgul olduğu için. Socket kullanımı çok bildiğim bir konu değil. Bu hatayı almamak için nasıl bir işlem yapmam gerekir?

Görsel:
https://ibb.co/FJgrHYb
 

 

wmaraci
reklam

anesteziker anesteziker WM Aracı Kullanıcı
  • Üyelik 20.09.2016
  • Yaş/Cinsiyet 40 / E
  • Meslek sağlık
  • Konum Ankara
  • Ad Soyad U** K**
  • Mesajlar 45
  • Beğeniler 4 / 4
  • Ticaret 0, (%0)
En azından socket işlemlerinde gönderilen verinin sockete yazdırıldığında mesaj yazdırmayla alakalı bir örnek konusunda yardımcı olabilir misiniz?
 

 

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
Socker açtın, ilk veri geldi sonrasında socket kapatmıyorsun diye düşünüyorum.

islem.php içindeki kod muhtemel her seferinde socket oluşturup, bind etmeye çalışıyordur.

Warning: socket_bind(): unable to bind address [98]: Address already in use in /volume1/web/savas/islem.php on

islem.php kodun aşağıdaki gibi olmalı.

1 - socket oluştur
2 - bağlantıyı ilişkilendir
3 - veriyi al
4 - bağlantıyı kapat

yanlış hatırlamıyorsam (emin değilim) php'de thread yoktu, her işlem bir process oluyordu. process ile socket ilişkisi tam olarak nasıl çalışıyor çok bilgim yok.

Yukarıdaki çözüm işini göreceğini düşünüyorum ama daha sağlıklı çözüm socket açıp, her daim socketten gelen veriyi dinleyip, sayfaya websocket ile pushlamak olazaktır. Sayfa üzerinde 200 ms refresh etmek sadece sunucuyu yorar.

Kolaylıklarr
anesteziker

kişi bu mesajı beğendi.

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)

anesteziker anesteziker WM Aracı Kullanıcı
  • Üyelik 20.09.2016
  • Yaş/Cinsiyet 40 / E
  • Meslek sağlık
  • Konum Ankara
  • Ad Soyad U** K**
  • Mesajlar 45
  • Beğeniler 4 / 4
  • Ticaret 0, (%0)
Ek bir izleme portu daha açtım ve gönder/al işlemlerini ayrı portlardan yapıyorum, çakışmalar ortadan kalktı. Teşekkür ederim.
 

 

wmaraci
wmaraci
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al