SOCKET programlamada fonksiyon içindeki DEĞİŞKENİ BAŞKA BİR FONKSİYONDA TANIMLAMA !

İsmail Bey’in dediği gibi kodlarınızı burada kod görünümüne alarak paylaşabilir misiniz?

Normalde global alanda bir client değişkeni tanımlayıp, f_ara() fonksiyonunun içinde bu global değişkeni değiştirirseniz, başka bir fonksiyonun içinde kullandığınız client’in değeri değiştirilen değer olur. Bu uygulayabileceğiniz yöntemlerden biridir yeter ki global alandaki client değişkenini değiştirdiğiniz fonksiyonu, client ile işlem yapacağınız diğer fonksiyonlardan önce çalıştırın ki client’in değeri değişsin.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import socket

client = None


def socket_olustur():
    global client
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    host = "localhost"
    port = 1236
    s.bind((host, port))
    s.listen(1)
    client, address = s.accept()


def gonder():
    client.send("merhaba".encode("utf-8"))


# Önce socket_olustur() fonksiyonunu çağırmalısınız ki
# client değişkeninin değeri değişsin. Ki zaten socket işlemleri
# yapabilmek için de önce bu fonksiyonu çağırmalısınız.
socket_olustur()
# Sonra clientin yaptığı işle ilgili başka bir fonksiyonu
# kullanabilirsiniz.
gonder()

Diğer bir yöntem ise İsmail Bey’in de dediği gibi sınıfları kullanmanızdır.

Üçüncü bir yöntem daha var, o da şu: global alanda boş bir liste tanımlayın. client, adres = listener.accept()'i yazdığınız satırdan sonra bu tanımladığınız listeye client’i ekleyin. Başka bir fonksiyonda client’e ihtiyacınız olduğunda bu listenin elemanını kullanabilirsiniz.