• Üyelik paylaşımı yasaktır! Hesabınızı başkalarına vermeyin! Hesap paylaşımları yasaklama ile sonuçlanacaktır.

Perl İle Basit TCP Soket Programlama

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Katılım
13 Ağu 2017
Mesajlar
21
Beğeni Puanı
6
Yaş
24
Selam Arkadaşlar!
Kodun içinde detaylı bir şekilde anlattım. iyi forumlar.:burnbear::)
Server.pl
Perl:
use Socket; # Socket libraryisini içeriye aktarıyoruz.
sub SunucuKur { # SunucuKur Fonksiyonu Tanıtılıyor
  print "Sunucu @_[0]:@_[1] üzerinden kuruluyor.\n"; # @_ bir arraydir ve foknsiyon içinde argüman arrayını temsil eder.
  socket(SOCKET,PF_INET,SOCK_STREAM,(getprotobyname('tcp'))[2]); # İlk argüman Soketimiz SOCKET değişkenine atamasını istedik. 2. argüman İnternet Bağlantısı. 3. Argüman Tcp protokolü olduğunu temsil ediyor. 4.Argüman Internet protokolünü ipv4 ipv6 vs.
  bind(SOCKET, pack_sockaddr_in(@_[1],inet_aton(@_[0]))) or return 0;
   # İlk argüman oluşturduğumuz SOCKET değişkeni. 2. argümanda pack_sockaddr_in fonksiyonu kullandık çünkü ip adresimizi ve portumuzu binary formatında paketlememiz gerekiyor.
   # iki argüman verdik 1.si portumuz olan fonksiyonumuzun 2.ci argümanı @_[1], 2. argüman ise inet_aton kullandık bu domain veya ipyi 4 bytelik formata indirger.
  listen(SOCKET,5) or return 0; # Sunucumuzun maksimum 5 kullanıcıya izin verecek.
  return 1;
}

$ip = "127.0.0.1";
$port = 3322;
$sonuc = SunucuKur($ip,$port);
print $sonuc ? "Sunucu başarılı bir şekilde kuruldu. $ip:$port\n" : die("Maalesef sunucu kurulamadı.\n"); # Eğer fonksiyondan başarısız sinyali gelirse mesajı sağdaki mesajı yazdırıp program çıkar yoksa soldaki yazı yazdırlır ve program devam eder.
print "Sunucu ayarlanıyor.";
accept(CLIENT,SOCKET); # Yeni bağlantı beklenilir. Ve bağlantı geldiğinde CLIENT değikenine atanır.
print CLIENT "Gorusuruz canim."; # Bağlanan kullanıcıya mesaj gönderilir.
close(CLIENT); # bağlanan kullanıcı ile bağlantı kesilir.
Çıktı
Kod:
Sunucu 127.0.0.1:3322 üzerinden kuruluyor.
Sunucu başarılı bir şekilde kuruldu. 127.0.0.1:3322
Sunucu ayarlanıyor.
Client.pl
Perl:
use Socket;
sub SunucuyaBaglan{ # SunucuBaglan Fonksiyonu Tanıtılıyor
  print "@_[0]:@_[1] Sunucusuna Bağlanılıyor.\n";
  socket(SOCKET,PF_INET,SOCK_STREAM,(getprotobyname('tcp'))[2]); # Soket oluşturuluyor.
  connect(SOCKET, pack_sockaddr_in($_[1],inet_aton($_[0]))) or die("Maalesef Sunucuya bağlanılamadı.\n"); # Sunucuya bağlanılmak için  ip adresi ve port paketlenip fonksiyona soket ile birlikte gönderiliyor.
  print "Sunucuya başarılı bir şekilde bağlandı\n";
  my $mesaj; # local $mesaj değişkeni oluşturulur.
  recv(SOCKET,$mesaj,16,0); # 17 bytelik veri okunuyor ve local $mesaj değişkenine aktarılıyor.
  print $mesaj;# $mesaj yazdırılıyor.
  close(SOCKET); # bağlantı kesilir.
}

SunucuyaBaglan("127.0.0.1",3322);
Çıktı
Kod:
127.0.0.1:3322 Sunucusuna Bağlanılıyor.
Sunucuya başarılı bir şekilde bağlandı
Gorusuruz canim.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...


Üst Alt