Builder - Stub İlişkisi [ VB.NET + C# ]

Hayırlı sabahlar farklı dilleri birleştirme konumuzda bugün modülleri birbirine benzer olan iki farklı dilde builder ve server bağlantısı örneği vereceğim. Bahsi geçen iki dilde modül yapıları birbirine benzer olduğu için çok farklı yöntemler denenebilir misal codedom gibi... Ben daha yeni bir projeyi örnek aldım. Endarion 'un projesini asıl projeye bana tıkla adresinden ulaşabilirsiniz. Çok fazla uzatmadan konumuza geçelim.


Visual Basic.NET üzerinde form oluşturup 4 tane textbox ve bir buton ekliyoruz. Bunlar IP, PORT, MAİL, ŞİFRE görevini görecek olup butonumuz ise değişkenleri C# server'ine atayacak olan kodları barındıracak. Proje başına gerekli ana kütüphanemizi ekleyelim.


Imports System.IO


Daha sonra buton içerisine şu kodları girelim;


 File.Copy(Application.StartupPath & "/Freya Stub.exe", Application.StartupPath & "/NewStub.exe")

    Dim fs As FileStream = New FileStream(Application.StartupPath & "/NewStub.exe", FileMode.Append)

    Dim bw As BinaryWriter = New BinaryWriter(fs)

    Dim IP As String = TextBox1.Text

    Dim Port As Integer = Convert.ToInt32(TextBox2.Text)

    Dim Mail As String = TextBox3.Text

    Dim Şifre As String = Convert.ToInt32(TextBox4.Text)

    bw.Write("StartIP:" & IP & ":EndIP")

    bw.Write("StartPort:" & Port & ":EndPort")

    bw.Write("StartMail:" & Mail & ":EndMail")

    bw.Write("StartŞifre:" & Şifre & ":EndŞifre")

    bw.Flush()

    bw.Close()

    fs.Close()



Şimdi C# üzerinde bir form uygulaması açalım ve içerisine 4 tane label ekleyelim. Bunlar IP, PORT, MAİL, ŞİFRE görevini görecek olup Visual Basic.NET üzerinden gelen değerleri C# formundaki eklemiş olduğumuz label'lere yazdıracak. Daha sonra uygulamamıza ana kütüphaneleri ekleyelim.


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;


Form Load olayına aşağıdaki kodları girelim;


string path = System.Reflection.Assembly.GetExecutingAssembly().Location;


      StreamReader sr = new StreamReader(path);

      StreamReader sr2 = new StreamReader(path);

      StreamReader sr3 = new StreamReader(path);

      StreamReader sr4 = new StreamReader(path);


      string Read1IP = sr.ReadToEnd();

      string Read2Port = sr2.ReadToEnd();

      string Read3Mail = sr3.ReadToEnd();

      string Read4Şifre = sr4.ReadToEnd();


      sr.Close();

      sr2.Close();

      sr3.Close();

      sr4.Close();


      Read1IP = Read1IP.Substring(Read1IP.IndexOf("StartIP:"), Read1IP.IndexOf(":EndIP") - Read1IP.IndexOf("StartIP:"));

      Read1IP = Read1IP.Replace("StartIP:", "");


      Read2Port = Read2Port.Substring(Read2Port.IndexOf("StartPort:"), Read2Port.IndexOf(":EndPort") - Read2Port.IndexOf("StartPort:"));

      Read2Port = Read2Port.Replace("StartPort:", "");


      Read3Mail = Read3Mail.Substring(Read3Mail.IndexOf("StartMail:"), Read3Mail.IndexOf(":EndMail") - Read3Mail.IndexOf("StartMail:"));

      Read3Mail = Read3Mail.Replace("StartMail:", "");


      Read4Şifre = Read4Şifre.Substring(Read4Şifre.IndexOf("StartŞifre:"), Read4Şifre.IndexOf(":EndŞifre") - Read4Şifre.IndexOf("StartŞifre:"));

      Read4Şifre = Read4Şifre.Replace("StartŞifre:", "");


      label1.Text = Read1IP;

      label2.Text = Read2Port;

      label3.Text = Read3Mail;

      label4.Text = Read4Şifre;


Projemizi derledikten sonra bin klasörüne çıkan Freya Stub'ı Visual Basic.NET üzerinde kodlamış olduğumuz ve bin klasörü içerisinde yer alan builder içerisine atalım ve builder'imizi başlatalım, değerlerimizi girelim, sonuçları izleyelim.