Tutorial ini memperkenalkan soket python dan menunjukkan bangunan pelayan HTTP dan pelanggan menggunakan modul socket
. Ia juga meneroka Tornado, perpustakaan rangkaian Python yang sesuai untuk pengundian panjang, websocket, dan aplikasi yang memerlukan sambungan pengguna yang berterusan.
Memahami SOCKETS
Soket bertindak sebagai saluran komunikasi antara dua aplikasi, sama ada pada mesin yang sama atau di seluruh rangkaian. Pada asasnya, ia adalah hubungan sambungan antara pelayan dan pelanggan; Pelayan menyediakan maklumat yang diminta oleh pelanggan. Sebagai contoh, penyemak imbas anda menggunakan soket untuk menyambung ke pelayan web apabila anda melawat laman web.
modul socket
Penciptaan soket menggunakan fungsi socket.socket()
:
import socket s = socket.socket(socket_family, socket_type, protocol=0)
argumen:
socket_family
: Alamat Keluarga (mis., untuk IPv4, socket.AF_INET
untuk IPv6).
socket.AF_INET6
socket.SOCK_STREAM
socket.SOCK_DGRAM
: Biasanya lalai hingga 0. protocol
Kaedah Pelanggan Utama:
: Menetapkan sambungan TCP.
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Contoh: s.connect()
Kaedah Pelayan Utama:
import socket stream_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server = "localhost" port = 8080 server_address = (server, port) stream_socket.connect(server_address) message = 'message' stream_socket.sendall(message.encode()) data = stream_socket.recv(10) print(data) stream_socket.close()
: Menetapkan alamat (nama host, port) ke soket.
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind()
s.listen()
s.accept()
(atau arahan yang sama untuk OS anda) untuk memeriksa penggunaan port. Rangka Kerja Tornado
import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = 'localhost' port = 8080 sock.bind((host, port)) sock.listen(1) print('Waiting for a connection') connection, client = sock.accept() print(client, 'connected') data = connection.recv(16) print('Received "%s"' % data) if data: connection.sendall(data) else: print('No data from', client) connection.close()
Tornado adalah kerangka web python dan perpustakaan rangkaian asynchronous. I/O yang tidak menyekatnya mengendalikan banyak sambungan serentak, menjadikannya sesuai untuk pengundian panjang, websocket, dan aplikasi yang memerlukan sambungan yang berterusan. netstat -ntlp
Tornado juga mengintegrasikan dengan
, membolehkan penggunaan kedua -dua perpustakaan dalam gelung acara yang sama.
segerak vs pengaturcaraan asynchronous
import tornado.ioloop import tornado.web class ApplicationHandler(tornado.web.RequestHandler): def get(self): self.write("""<title>Tornado Framework</title><h2>Welcome to the Tornado framework</h2>""") if __name__ == "__main__": application = tornado.web.Application([ (r"/", ApplicationHandler), ]) application.listen(5001) tornado.ioloop.IOLoop.instance().start()
Pengaturcaraan Synchronous melaksanakan tugas secara berurutan, sementara pengaturcaraan tak segerak membolehkan pelaksanaan tugas serentak tanpa menunggu orang lain selesai. Pengaturcaraan asynchronous adalah berfaedah apabila berurusan dengan operasi I/O yang terikat seperti panggilan API, menghalang kelewatan dan meningkatkan respons aplikasi. Keupayaan asynchronous tornado amat berguna untuk mengendalikan permintaan API berganda secara serentak.
Kesimpulan
Tutorial ini menyediakan asas untuk pengaturcaraan soket di Python dan menunjukkan penciptaan pelayan/pelanggan mudah. Penjelajahan lanjut modul socket
dan tornado akan meningkatkan keupayaan rangkaian anda. Ingatlah untuk berunding dengan dokumentasi Python rasmi untuk maklumat yang lebih terperinci.
(imej output webserver tornado - gantikan dengan url imej sebenar jika tersedia)
Atas ialah kandungan terperinci Pengenalan kepada Pengaturcaraan Rangkaian di Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!