Merhabalar arkadaşlar bugün sizlere elimden geldiği kadar socket modülünü anlatmaya çalışacağım....
Konu Başlıkları;
>>Socket modülü nedir?
>>Socket tipi kaça ayrılır?
>>Socket methodları ve açıklamaları.
>>Küçük bir örnek gösterim.
Socket Modülü Nedir?
Socket modülü, istemci ve sunucu programları dahil olmak üzere tam teşekküllü ağ uygulamaları oluşturmak için çeşitli nesneler, sabitler, işlevler ve ilgili istisnalar sağlar.
Örnek bir socket nesnesi için gerekli olan parametreler aşağıdaki gibidir.
s=socket.socket(socket_family, socket_type, protocol=0)
Socket family 2 ye ayrılmaktadır:
socket_family ;
1) AF_UNIX (UNIX ile aynı hostta veri aktarımı için) (linux)
2) AF_INET (INET internet üzerinden veri aktarımı için) (genel)
Socket type 2 ye ayrılmaktadır:
socket_type;
1) SOCK_STREAM (TCP veri aktarımı için)
2) SOCK_DGRAM (UDP veri aktarımı için)
Protokol standartta 0 olarak kullanılabilir.
protocol = 0 (default)
SOCKET METHODLARI VE AÇIKLAMALARI;
>> s.socket()
>> s.bind()
>> s.listen()
>> s.accept()
>> s.connect()
>> s.recv()
>> s.send()
>> s.recvfrom()
>> s.sendto()
>> s.close()
>> socket.gethostname()
AÇIKLAMALARI;
>>> s.socket(family, type, [protocol])
Socket yaratmak için kullanılır...
Family parametresi socketin hangi alan için yaratıldığını belirtir. Genel kullanılanlar ise Unix alanı için (AF_UNIX) internet alanı için AF_INET dir.
Type parametresi ile kullanılacak protokol tipi belirlenir. TCP için SOCK_STREAM, UDP için SOCK_DGRAM kullanılır. Diğer geçerli seçenekler ise SOCK_RAW, SOCK_SEQPACKET ve SOCK_RDM kullanılır.
>>> s.bind()
Socketi bir adrese bağlamak için kullanılır,bind() metodu parametre olarak socketin bağlanacağı adres ve port numarasından oluşan (host, port) şeklinde kullanılır.
>>> s.listen
Beğlantı dinlemek için kullanılır,parametre olarak kaç bağlantının kabul edileceğini alır. En az 1 olamalıdır.
>>> s.accept()
Bağlantıları kabul etmek için kullanılır,bu method bağlantı gelince gelen pasif kabul edilen bağlantıyı dahi kabul eder ve bağlantı gelinceye kadar sürekli bekler.
>>> s.connect()
Sockete bağlanmak için bu method kullanılır...
>>> s.recv()
Bu method TCP mesajı alır.
>>> s.send()
Bu method TCP mesajını iletir.
>>> s.recvfrom()
Bu method UDP mesajını alır.
>>> s.sendto()
Bu method UDP mesajını iletir.
>>> s.close()
Bu method socketi kapatır.
>>> s.gethostname()
Bu method Ana bilgisayar adını gösterir/döndürür.
Küçük Bir Örnek Gösterim:
https://paste.ubuntu.com/p/rrqxGgwgn4/
Konu Başlıkları;
>>Socket modülü nedir?
>>Socket tipi kaça ayrılır?
>>Socket methodları ve açıklamaları.
>>Küçük bir örnek gösterim.
Socket Modülü Nedir?
Socket modülü, istemci ve sunucu programları dahil olmak üzere tam teşekküllü ağ uygulamaları oluşturmak için çeşitli nesneler, sabitler, işlevler ve ilgili istisnalar sağlar.
Örnek bir socket nesnesi için gerekli olan parametreler aşağıdaki gibidir.
s=socket.socket(socket_family, socket_type, protocol=0)
Socket family 2 ye ayrılmaktadır:
socket_family ;
1) AF_UNIX (UNIX ile aynı hostta veri aktarımı için) (linux)
2) AF_INET (INET internet üzerinden veri aktarımı için) (genel)
Socket type 2 ye ayrılmaktadır:
socket_type;
1) SOCK_STREAM (TCP veri aktarımı için)
2) SOCK_DGRAM (UDP veri aktarımı için)
Protokol standartta 0 olarak kullanılabilir.
protocol = 0 (default)
SOCKET METHODLARI VE AÇIKLAMALARI;
>> s.socket()
>> s.bind()
>> s.listen()
>> s.accept()
>> s.connect()
>> s.recv()
>> s.send()
>> s.recvfrom()
>> s.sendto()
>> s.close()
>> socket.gethostname()
AÇIKLAMALARI;
>>> s.socket(family, type, [protocol])
Socket yaratmak için kullanılır...
Family parametresi socketin hangi alan için yaratıldığını belirtir. Genel kullanılanlar ise Unix alanı için (AF_UNIX) internet alanı için AF_INET dir.
Type parametresi ile kullanılacak protokol tipi belirlenir. TCP için SOCK_STREAM, UDP için SOCK_DGRAM kullanılır. Diğer geçerli seçenekler ise SOCK_RAW, SOCK_SEQPACKET ve SOCK_RDM kullanılır.
>>> s.bind()
Socketi bir adrese bağlamak için kullanılır,bind() metodu parametre olarak socketin bağlanacağı adres ve port numarasından oluşan (host, port) şeklinde kullanılır.
Kod:
s.bind(("192.168.1.90,1234))
>>> s.listen
Beğlantı dinlemek için kullanılır,parametre olarak kaç bağlantının kabul edileceğini alır. En az 1 olamalıdır.
Kod:
s.listen(2)
>>> s.accept()
Bağlantıları kabul etmek için kullanılır,bu method bağlantı gelince gelen pasif kabul edilen bağlantıyı dahi kabul eder ve bağlantı gelinceye kadar sürekli bekler.
>>> s.connect()
Sockete bağlanmak için bu method kullanılır...
Kod:
s.connect(("192.168.1.97", 1234))
>>> s.recv()
Bu method TCP mesajı alır.
>>> s.send()
Bu method TCP mesajını iletir.
>>> s.recvfrom()
Bu method UDP mesajını alır.
>>> s.sendto()
Bu method UDP mesajını iletir.
>>> s.close()
Bu method socketi kapatır.
>>> s.gethostname()
Bu method Ana bilgisayar adını gösterir/döndürür.
Küçük Bir Örnek Gösterim:
Kod:
#Basit bir server yazdık :)
import socket
host = socket.gethostname()#Local Cihazımızı Çağıralım...
port = 12345
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#Socketimizi oluşturalım...
print("socket oluşturuldu")
s.bind((host, port))#bind metodu ile host ve portu bildiriyoruz.
print("Socket {} nolu porta bağlandı".format(port))
s.listen(5)# client üzerinden gelecek bağlantıyı bekliyoruz....
print("Socket Dinleniyor...")
except socket.error as bildirim:
print("Hata:",bildirim)
while True:
# Client ile bağlantı kurulursa
c, addr = s.accept()#Gelen istekleri kabul eden methodu çağırdık....
print('Gelen bağlantı:', addr)
# Bağlanan client a mesaj gönderelim.
mesaj = 'Bağlantı Başarılı :)'
c.send(mesaj.encode('utf-8'))
# Bağlantıyı sonlandıralım
c.close()
Son düzenleme: