Perl İle Basit TCP Soket Programlama

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üye
Katılım
13 Ağu 2017
Mesajlar
21
Tepki puanı
6
Ödüller
6
Yaş
30
8 HİZMET YILI
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.
 
aka panic.rs
Kurucu
Katılım
18 Haz 2015
Mesajlar
3,379
Çözümler
50
Tepki puanı
13,156
Ödüller
22
Sosyal
10 HİZMET YILI
umarım c&p yapmıyosndur :rem:
 
Ey yüce yaradan bana fantastik bir hayat yaşattın.
Emektar Üye
Katılım
2 Ocak 2016
Mesajlar
4,595
Çözümler
1,842
Tepki puanı
2,297
Ödüller
18
10 HİZMET YILI
anlatım gayet başarılı teşekkürler.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst