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.
 
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