PC uzerindeki iki programin birbiriyle haberlesmesi

Mikro Step

Kıdemli Üye
Katılım
25 Eylül 2022
Mesajlar
4,466
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.
 

Forum istatistikleri

Konular
6,149
Mesajlar
104,941
Üyeler
2,556
Son üye
ByTEK

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
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?
Back
Top