oktatas:programozas:python:halozat
Tartalomjegyzék
Hálózat
- Szerző: Sallai András
- Copyright © 2020, Sallai András
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
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