Python ile Port dinle-Veri gönder

ile Ömer Osmanoğlu · 24 Mart 2024

Yazılımlarda port dinlemeye ve port’a veri gönderme ihtiyacı hissedebilirsiniz. Bunun için aşağıda python kod parçacıklarını görebilirsiniz.

İlk önce dinlemek istediğiniz portu için aşağıdaki kod 1923 portunu dinliyor.

portDinle.py

import socket

# Dinlemek istediğimiz port numarasını yazın
PORT = 1923

# TCP protokolü ile bir soket oluştur
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Soketi belirtilen porta bağlayın
server_socket.bind(('localhost', PORT))

# Bağlantıyı dinlemeye başlayın
server_socket.listen(1)

print(f"Dinlenen port: {PORT}")

while True:
    # Bağlantıyı kabul et.
    client_socket, client_address = server_socket.accept()
    print(f"Bağlantı alındı: {client_address}")

    # Bağlantıdan gelen veriyi oku.
    data = client_socket.recv(1024)
    print(f"Gelen veri: {data.decode('utf-8')}")

    # İsteğe Bağlı: Veri geldiyse bir yanıt gönder. Client bilsin verinin geldiğini.
    response = "Veri alındı. Teşekkür ederim!"
    client_socket.sendall(response.encode('utf-8'))

    # Bağlantıyı kapat.
    client_socket.close() 

Daha sonra port’a veri gönderiyoruz.

portGonder.py:

import socket
import sys

def send_data_to_port(data, port=1923):
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        try:
            s.connect(('localhost', port))
            s.sendall(data.encode('utf-8'))
            response = s.recv(1024)
            print("Server response:", response.decode('utf-8'))
        except Exception as e:
            print("Hata:", e)

def main():
    if len(sys.argv) > 1:
        try:
            port = int(sys.argv[1])
        except ValueError:
            print("Geçersiz port numarası. Varsayılan olarak 1923 kullanılıyor.")
            port = 1923
    else:
        port = 1923

    while True:
        user_input = input("Veri gönder (çıkmak için 'exit' yazın): ")

        if user_input.lower() == 'exit':
            sys.exit()

        send_data_to_port(user_input, port)
        # Kullanıcının yeni veri girmesini beklemek için bu satırı çıkardık.
        # new_data = input("Tekrar gönderilecek veri (çıkmak için 'exit' yazın): ")
        # Eğer kullanıcı "exit" yazarsa, döngüden çıkılır ve program sona erer.

if __name__ == "__main__":
    main() 

Bu da kod’un çalıştırılmış hali.

Makale içeriği
Çıktı

Kodu: “python portGonder.py 1924″ şeklinde yazarak başka port’a veri gönderebilirsiniz.

Windows pc’de bir portun kullanılıp kullanılmadığını merak ediyorsanız. Aşağıdaki komut istemi ile çıktı alabilirsiniz.

netstat -ano | find "1923"

#python #port #dinle #tcp/ip #listen #post #send #data

Bu daha çok geliştirilebilir.

  • Port’dan gelen veriler bir database’e veya bir txt dosyasına kayıt edilebilir.
  • Dinlenen port parametrik yapılabilinebilir.
  • Loglama yapabilirsiniz.

Bunlarıda okumak isteyebilirsiniz