PC uzerindeki iki programin birbiriyle haberlesmesi

Mikro Step

Kıdemli Üye
Katılım
25 Eylül 2022
Mesajlar
4,002
PC icin bir program yazdigimizi varsayalim.

Bu program mesela bir dosyadan verileri okuyor ve uzerinde islem yapiyor ardindan da sonuclari bir baska dosyaya yaziyor.

Bir ikinci program da bu dosyalari okuyor yaziyor. Gerekirse yardimci dosyalar da kullanilarak iki ayri program bir biriyle sorunsuz veri alisverisini bu sekilde yapabiliyor.

Fakat ben bu cozumu begenmiyorum. Hic diski isin icine sokmadan veri aktarimini ram uzerinden yapamazmiyim?
Ramdisk haricinde bir cozum yokmu?

Isin asli benim yazacagim program server gibi davranacak.

Kullanici ise kendi programini yazacak ve benim yazilimima bazi veriler yollayacak ve bunlarin isleme alinmasini isteyecek.
 
Son düzenleme:
UNIX işletim sistemi bundan 50 yıl önce ilk ortaya çıktığında, bu senin anlattığın olay işletim sisteminin ana tasarımını oluşturuyordu. Her birisi küçük ve belli bir işi yapan program, ve bu programlar arasında "pipe" denen mekanizmayı kullanarak veri alışverişi. Mesela bir text dosyada bir versiyon string var.

version.ini:
[ta@bonsai ~]$ cat version.ini
Version = 1.0.5
[ta@bonsai ~]$

Buradan mesela bir script içinde versiyon bileşenlerini okuyacağız. Yani major version = 1, minor version = 0, build numarası = 5. Sonra da majör versiyona bakıp ona göre birşey yapmaya karar vereceğiz. Bunun için basit bir shell script yeterli.

pver.sh:
#!/bin/bash

cat version.ini | grep Version | awk -F= '{ print $2; }' | awk -F. '{ print $1; }'

Bu programı çalıştırınca bize major versiyonu döndürüyor.

Bash:
[ta@bonsai ~]$ ./pver.sh
 1
[ta@bonsai ~]$

Yani anlaşılan artık senin taş devri Windows'u geride bırakıp Linux'a geçme zamanın gelmiş :)
 
Veya bir dizinde bulunan alt dizinlerin her birisi ne kadar yer kaplıyor görmek istiyoruz. Aynı zaman bu dizinleri de kapladıkları yere göre sıralamak istiyoruz.

ilgili dizine giriyorum. du komutu bir dizinin toplam kapladığı yeri veriyor. sort komutuna ise burada nümerik sıralama yaptırıyorum. tail komutu ile de en sondaki dizinleri (yani en çok yer kaplayanları) göstertiyorum.

Bash:
[ta@bonsai Artists]$ du -k -d1 | sort -n | tail
723920  ./The Beatles
732144  ./Aphex Twin
748432  ./Kruder _ Dorfmeister
781608  ./Bob Dylan
819144  ./Elton John
897328  ./OutKast
956708  ./Marvin Gaye
1521240 ./Radiohead
1810420 ./Miles Davis
56326628        .
[ta@bonsai Artists]$
 
Ubuntu ile denenebilir Linux ben seviyorum Ubuntu ile kullanmayı
 
UNIX işletim sistemi bundan 50 yıl önce ilk ortaya çıktığında, bu senin anlattığın olay işletim sisteminin ana tasarımını oluşturuyordu. Her birisi küçük ve belli bir işi yapan program, ve bu programlar arasında "pipe" denen mekanizmayı kullanarak veri alışverişi. Mesela bir text dosyada bir versiyon string var.

version.ini:
[ta@bonsai ~]$ cat version.ini
Version = 1.0.5
[ta@bonsai ~]$

Buradan mesela bir script içinde versiyon bileşenlerini okuyacağız. Yani major version = 1, minor version = 0, build numarası = 5. Sonra da majör versiyona bakıp ona göre birşey yapmaya karar vereceğiz. Bunun için basit bir shell script yeterli.

pver.sh:
#!/bin/bash

cat version.ini | grep Version | awk -F= '{ print $2; }' | awk -F. '{ print $1; }'

Bu programı çalıştırınca bize major versiyonu döndürüyor.

Bash:
[ta@bonsai ~]$ ./pver.sh
 1
[ta@bonsai ~]$

Yani anlaşılan artık senin taş devri Windows'u geride bırakıp Linux'a geçme zamanın gelmiş :)
Çözüm : wsl --install :D
 
Bu konuda çok seçenek var aslında. Performans, mesaj büyüklüğü, birden fazla sunucuya dağıtma ihtiyacı, mesajların saklanması gibi ihtiyaçlara göre çözüm değişebilir. Ama başlıca seçenekler şunlar olabilir diye düşünüyorum:

1- Bir nesne veritabanı kullanmak (MongoDB gibi). Performans açısından disk kullanmak istemiyorsanız In-Memory Storage Engine seçeneği de var.
2- Bir Message Queue kullanmak. Açık kaynak olanlar da dahil çok fazla seçenek var. Büyük bölümü in-memory çalışıyor.
3- MQTT gibi yine mesaj tabanlı bir protokol kullanıp sunucuya bir MQTT broker kurmak.
4- Kendi sunucu uygulamanızda bir HTTP hizmeti sunup, istemcinin veriyi HTTP-POST ile göndermesini sağlamak.
 
  • Beğen
Reactions: nt
sendmessage fonksiyonu var , sadece veri gönderme değil her şey yaptırılabilir , mause, kalvye basmak gibi sanal, ben moonstar sözlükten tüm ingilizce kelimeleri çekişmiştim.
 
kontrolsuz dogrudan bellek erisimine windows izin vermiyor, asm ile mudahale edip istediginiz adres bloguna veri yazmayada kalkarsaniz bu adresi kullanan baska bir program ile cakisma ihtimali var, izin vermemesinin sebeplerinden birisi bu, zaten windowsun size verdigi adresinde yanlis hatirlamiyorsam maske adres olmasi gerek, gercek adresi(logical adress) arkada kendisi kontrol ediyor, bizim adres kontrolumuzun c deki malloc() fonksiyonunun otesine gecebilecegini sanmiyorum.
 
Gecmis yillarda windowsda mesaj alip gonderme ile bir seyler yapmistim. Fakat konuya hakim olmadigim icin programlara birbirlerine handle degeri gibi parametreyi bildirmek gerekiyordu. Bu tanimlamayi da karsi tarafa bir kereligine dosya uzerinden bildiriyordum.

Sozkonusu sorunun dogru cozumu nasil yapiliyor?
 
Windows enumarate fonksiyonu var , oradan açık olan tüm windowslara ulaşabilirsin isminden aradığın wini bulabilirsin, bir edit kutusu eklersin "visible" olması şart değil kolayca veri gönderebilirsin, edit kutusu şart değil direkt data da gönderebilirsin ama daha çok kod yazman gerekir.
Eğer lazımsa bir deneme kod yazayım.
 

Çevrimiçi personel

Forum istatistikleri

Konular
5,982
Mesajlar
102,041
Üyeler
2,515
Son üye
karakemal

Son kaynaklar

Son profil mesajları

deneyci wrote on hakan8470's profile.
Sibonge uNkulunkulu ngokuhlukahluka asinike kona.

Bu hangi dil? :)
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
Back
Top