Python - Ağ Programlama

Python, ağ hizmetlerine iki düzeyde erişim sağlar. Düşük bir düzeyde, hem bağlantı odaklı hem de bağlantısız protokoller için istemcileri ve sunucuları uygulamanıza olanak tanıyan temel işletim sistemindeki temel yuva desteğine erişebilirsiniz.

Python'da ayrıca FTP, HTTP vb. Gibi belirli uygulama düzeyinde ağ protokollerine daha yüksek düzeyde erişim sağlayan kitaplıklar vardır.

Bu bölüm size Ağ Oluşturma - Soket Programlama'daki en ünlü kavramı anlamanızı sağlar.

Soketler nedir?

Soketler, çift yönlü bir iletişim kanalının uç noktalarıdır. Soketler bir süreç içinde, aynı makinedeki işlemler arasında veya farklı kıtalardaki işlemler arasında iletişim kurabilir.

Soketler, bir dizi farklı kanal türü üzerinden uygulanabilir: Unix etki alanı soketleri, TCP, UDP, vb. Soket kütüphanesi ortak taşımaları yanı sıra dinlenme işlemek için genel bir arayüz işlemek için belirli sınıfları sağlar.

Soketlerin kendi kelime dağarcığı vardır -

Sr.No. Terim ve Açıklama
1

Domain

Taşıma mekanizması olarak kullanılan protokol ailesi. Bu değerler, AF_INET, PF_INET, PF_UNIX, PF_X25 ve benzeri sabitlerdir.

2

type

İki uç nokta arasındaki iletişim türü, tipik olarak bağlantı odaklı protokoller için SOCK_STREAM ve bağlantısız protokoller için SOCK_DGRAM.

3

protocol

Tipik olarak sıfır, bu, bir alan ve tür içindeki bir protokolün bir varyantını tanımlamak için kullanılabilir.

4

hostname

Bir ağ arayüzünün tanımlayıcısı -

  • İki nokta üst üste (ve muhtemelen nokta) gösteriminde bir ana bilgisayar adı, noktalı dörtlü adres veya bir IPV6 adresi olabilen bir dize

  • Bir INADDR_BROADCAST adresini belirten bir "<broadcast>" dizesi.

  • INADDR_ANY'yi belirten sıfır uzunluklu bir dize veya

  • Ana bilgisayar bayt sırasına göre ikili adres olarak yorumlanan bir Tamsayı.

5

port

Her sunucu, bir veya daha fazla bağlantı noktasını arayan istemcileri dinler. Bir bağlantı noktası, bir Fixnum bağlantı noktası numarası, bir bağlantı noktası numarası içeren bir dize veya bir hizmetin adı olabilir.

soket Modülü

Bir soket oluşturmak için, soket modülünde bulunan ve genel sözdizimine sahip socket.socket () işlevini kullanmalısınız -

s = socket.socket (socket_family, socket_type, protocol=0)

İşte parametrelerin açıklaması -

  • socket_family - Bu, daha önce açıklandığı gibi AF_UNIX veya AF_INET'tir.

  • socket_type - Bu, SOCK_STREAM veya SOCK_DGRAM'dır.

  • protocol - Bu genellikle dışarıda bırakılır ve varsayılan değer 0'dır.

Soket nesnesine sahip olduğunuzda, istemci veya sunucu programınızı oluşturmak için gerekli işlevleri kullanabilirsiniz. Aşağıda gerekli işlevlerin listesi verilmiştir -

Sunucu Soket Yöntemleri

Sr.No. Yöntem ve Açıklama
1

s.bind()

Bu yöntem adresi (ana bilgisayar adı, bağlantı noktası numarası çifti) sokete bağlar.

2

s.listen()

Bu yöntem, TCP dinleyicisini kurar ve başlatır.

3

s.accept()

Bu, pasif olarak TCP istemcisi bağlantısını kabul eder, bağlantı gelene kadar bekler (engelleme).

İstemci Soket Yöntemleri

Sr.No. Yöntem ve Açıklama
1

s.connect()

Bu yöntem, TCP sunucusu bağlantısını aktif olarak başlatır.

Genel Soket Yöntemleri

Sr.No. Yöntem ve Açıklama
1

s.recv()

Bu yöntem, TCP mesajını alır

2

s.send()

Bu yöntem, TCP mesajını iletir

3

s.recvfrom()

Bu yöntem UDP mesajını alır

4

s.sendto()

Bu yöntem UDP mesajını iletir

5

s.close()

Bu yöntem soketi kapatır

6

socket.gethostname()

Ana bilgisayar adını döndürür.

Basit Bir Sunucu

İnternet sunucuları yazmak için, socketbir soket nesnesi oluşturmak için soket modülünde mevcut işlev. Daha sonra bir soket sunucusu kurmak için diğer işlevleri çağırmak için bir soket nesnesi kullanılır.

Şimdi ara bind(hostname, port)verilen ana bilgisayarda hizmetiniz için bir bağlantı noktası belirtme işlevi .

Ardından, döndürülen nesnenin kabul yöntemini çağırın . Bu yöntem, bir istemci belirttiğiniz bağlantı noktasına bağlanıncaya kadar bekler ve ardından bu istemciyle olan bağlantıyı temsil eden bir bağlantı nesnesi döndürür .

#!/usr/bin/python           # This is server.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.
s.bind((host, port))        # Bind to the port

s.listen(5)                 # Now wait for client connection.
while True:
   c, addr = s.accept()     # Establish connection with client.
   print 'Got connection from', addr
   c.send('Thank you for connecting')
   c.close()                # Close the connection

Basit Bir Müşteri

Verilen bir 12345 portuna ve verilen ana bilgisayara bağlantı açan çok basit bir istemci programı yazalım. Python'un soket modülü işlevini kullanarak bir soket istemcisi oluşturmak çok basittir .

socket.connect(hosname, port )TCP bağlantısı açar hostname üzerinde port . Bir soket açtıktan sonra, herhangi bir IO nesnesi gibi okuyabilirsiniz. Bittiğinde, bir dosyayı kapatacağınız için onu kapatmayı unutmayın.

Aşağıdaki kod, belirli bir ana bilgisayara ve bağlantı noktasına bağlanan, soketten mevcut verileri okuyan ve ardından çıkan çok basit bir istemcidir -

#!/usr/bin/python           # This is client.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.

s.connect((host, port))
print s.recv(1024)
s.close()                     # Close the socket when done

Şimdi bu server.py'yi arka planda çalıştırın ve ardından sonucu görmek için client.py'nin üzerinde çalıştırın.

# Following would start a server in background.
$ python server.py & 

# Once server is started run client as follows:
$ python client.py

Bu, aşağıdaki sonucu verecektir -

Got connection from ('127.0.0.1', 48437)
Thank you for connecting

Python İnternet modülleri

Python Ağı / İnternet programlamasındaki bazı önemli modüllerin listesi.

Protokol Ortak işlev Port No Python modülü
HTTP internet sayfaları 80 httplib, urllib, xmlrpclib
NNTP Usenet haberleri 119 nntplib
FTP Dosya transferleri 20 ftplib, urllib
SMTP E-mail göndermek 25 smtplib
POP3 E-posta alınıyor 110 poplib
IMAP4 E-posta alınıyor 143 imaplib
Telnet Komut satırları 23 telnetlib
Sincap Belge transferleri 70 gopherlib, urllib

FTP, SMTP, POP ve IMAP protokolleriyle çalışmak için lütfen yukarıda belirtilen tüm kitaplıkları kontrol edin.

Diğer Okumalar

Bu, Soket Programlama ile hızlı bir başlangıçtı. Bu çok geniş bir konu. Daha fazla ayrıntı bulmak için aşağıdaki bağlantıdan geçmeniz önerilir -

  • Unix Soket Programlama .

  • Python Soket Kitaplığı ve Modülleri .