< Python

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

#!/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

#!/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

#!/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

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

https://www.tutorialspoint.com/python3/python_networking.htm (2020)

https://docs.python.org/3.0/library/socketserver.html (2020)

https://docs.python.org/3/howto/sockets.html (2020)

https://docs.python.org/3/library/socketserver.html (2020)

https://www.journaldev.com/15906/python-socket-programming-server-client (2020)

https://www.pubnub.com/blog/socket-programming-in-python-client-server-p2p/ (2020)

https://realpython.com/python-sockets/ (2020)