Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:python:halozat

< Python

Hálózat

TCP szerver

Szerver

szerver.py
#!/usr/bin/python3 
import socket                                         
 
# foglalatobjektum létrehozása
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
 
# a helyi gépnév lekérdezése
host = socket.gethostname()                           
 
port = 9999                                           
 
# kapcsolódás a porthoz
serversocket.bind((host, port))                                  
 
# 5 kérés kerülhet várakozási sorba
serversocket.listen(5)                                           
 
while True:
    # kapcsolat elfogadása
    clientsocket,addr = serversocket.accept()
    print((clientsocket.recv(1024)).decode())
    clientsocket.send('vmi\n'.encode())
 
    print("Kapcsolat innen %s" % str(addr))
 
    msg = 'Kösz a kapcsolatot'+ "\r\n"
    clientsocket.send(msg.encode('utf-8'))
    clientsocket.close()

Kliens

kliens.py
#!/usr/bin/python3
 
import socket
 
# foglalatobjektum létrehozása
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
 
# a helyi gépnév lekérdezése
host = socket.gethostname()                           
 
port = 9999
 
# kapcsolódás az adott gép portjához
s.connect((host, port))                            
 
s.sendall('árvíztűrő'.encode())
 
# 1024 bájt fogadása
msg = s.recv(1024)                                     
 
s.close()
print (msg.decode('utf-8'))

Használat

Linuxon

chmod + szerver.py kliens.py
./szerver.py &
./kliens.py

Ha szeretnénk kilőni parancssorból a szervert:

pkill szerver.py
fuser 9999/tcp

Az fuser parancs nem kötelező, de ha nem használjuk 1 percig várni kell, amíg a foglalat fel nem szabadul.

Weblap leszedése

import urllib.request, urllib.error, urllib.parse
 
url = 'https://szit.hu'
response = urllib.request.urlopen(url)
webContent = response.read()
 
print(webContent)

Egyszerű üzenetküldő kliens

client.py
#!/usr/bin/python3
 
import socket
 
try:
    host = 'localhost'                      
    port = 9000
    c = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    c.connect((host, port))                            
    c.send('árvíztűrő'.encode())
    c.shutdown(socket.SHUT_RDWR)
    c.close()
except socket.error:
    print('Hiba! A kapcsolat sikertelen!')

IPC szerver

szerver.py
import socket
 
from threading import Thread
 
class SimpleProgram(Thread):
    def __init__(self):
        Thread.__init__(self)
 
        self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.socket.bind(('localhost', 9000))
        self.socket.listen(5)
        self.setDaemon(True)
        self.start()
    def run(self):
        while True:
            try:
                client, addr = self.socket.accept()
                data = client.recv(1024).decode()
                print(data)
                client.shutdown(socket.SHUT_RDWR)
                client.close()
            except socket.error:
                print("Hiba! A foglalat létrehozás sikertelen!")
        try:
            self.socket.shutdown(socket.SHUT_RDWR)
        except:
            pass
        self.socket.close()
prog = SimpleProgram()
prog.run()

Forrás

oktatas/programozas/python/halozat.txt · Utolsó módosítás: 2023/08/21 21:18 szerkesztette: admin