Soket programlama temelleri

gokmenkent

Yeni üye
12 Eyl 2008
17
0
s.a arkadaşlar size socket programlama da soket programlamanın mantığını ve küçük bir server oluşturmayı anlatacağım

şimdi bir iş görüşmesine gideceksiniz bu iş yeri görüşmelerini örnek 5 farklı odada yapıyor ve görüşeceğiniz kişiyi daha önceden bilmiyorsunuz.

peki bu kişi hangi odada ve kim bunu nasıl bilebiliriz

cevap basit görüşeceğimiz kişi ye bir numara verirsek ve bu kişinin hangi odada olduğu söylenirse basitçe bu kişiyi bulabiliriz.

İşte bilgisayarlarda birbirleri ile iletişime geçerken bu bilgilere ihtiyaç duyar.

bu bilgiler basitçe ip adresi ve port numarasıdır

şimdi bunu server kodları üstünde açıklayayım

bu proglama ile trojan,keylogger,multiplayer oyunlar gibi programların temellerini oluşturur.

ilk önce kütüphaneleri çekelim

Kod:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;

burda ek olarak .net.sockets ve .net kütüphanelerini ekledik

şimdi forma bir buton ,text box (textbox programda text box2 şeklinde olduğundan program dakini siz kendi vereceğiniz bir isimle değiştirin)ve bir rich text box koyun içine;
Kod:
IPAddress ip = IPAddress.Parse(textBox2.Text);
            
            TcpListener listen = new TcpListener(ip,8888);
            listen.Start();
            
            TcpClient client = default(TcpClient);
            client = listen.AcceptTcpClient();
           
            NetworkStream stream = client.GetStream();
            if (!client.Connected)
            {
                richTextBox1.Text = "bağlanamadı";
            }
            else
            {
                richTextBox1.Text = "başladı";
                try
                {
                    richTextBox1.Text = "Server Başladı";
                    byte[] oku = new byte[10025];
                    stream.Read(oku, 0, (int)client.ReceiveBufferSize);
                    string yaz = System.Text.Encoding.ASCII.GetString(oku);
                    stream.Flush();
                    textBox1.Text = yaz;
                    richTextBox1.Text = "geldi" + yaz;
                   
                       
                    
                    richTextBox1.Text = "Bilgi Almak İçin Al butonuna bas";
                    client.Close();
                    listen.Stop();
                    return;
                }
                catch
                {
                    richTextBox1.Text = "iletişim Başarısız";
                }
                
            }
yerleştirin peki bu ne anlama geliyor

ilk önce ip tanımladık.ve bu ip yi nereden alacağını söyledik

şimdi bir listener tanımı yapalım yani dinleyici

bunun için 2 nesneye ihtiyaç var port ve ip adresi

bunları tanıladıkdan sonra listen.start() ile listen başlatalım

şimdi veri paylaşımı için bir client tanımlayalım
bu client tanımında herhangi bir özellik olmadığından default(TcpClient) şeklinde tanımlıyoruz.
listenerı cliente tanıtalım
client = listen.AcceptTcpClient();

şimdi bir stream oluşturup

bu streame clienti tanıtalım getstream veri alışverişinin oluşması için gereklidir.
NetworkStream stream = client.GetStream();

bazı kontroller ekleyelim if,else try catch gibi programı daha rahat yönetebilmemiz için

sonra veri alışverişini tanımlayalım biliyosunuzki bilgisayarlar yazdığımız kelimeleri bytlere çevirir sonra onları analiz eder ve sonra bize cevap gönderir bizde burda bunu sağlayacağız yazımızı bytlara çevireceğiz:
Kod:
  byte[] oku = new byte[10025];
                    stream.Read(oku, 0, (int)client.ReceiveBufferSize);
                    string yaz = System.Text.Encoding.ASCII.GetString(oku);
                    stream.Flush();
richTextBox1.Text = "geldi" + yaz;
burada yeni bir byte tanımladık
stream read ile byte ı okuduk tamamını okumak için
(int)client.ReceiveBufferSize ifadesini kullandık

sonra bir string tanımladık ve buna "oku" nesnesinden gelen bilgileri bizim anlayacağımız
yazılara döndürecek System.Text.Encoding.ASCII.GetString(oku) ifadesini kullanıp bytları string şeklinde formumuzda gösterdik

İşte server programlama temeli bu arkadaşlar
inşallah faydalı bir şey sunmuşumdur
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.