Noprianto Python
Noprianto Python
Sebagai tambahan, untuk server TCP, socket yang digunakan untuk menerima koneksi tidaklah sama dengan socket yang digunakan untuk melakukan koneksi dengan client. Kita akan membahas hal ini dalam contoh.
Modul socket
Python menyediakan sangat banyak modul untuk pemrograman jaringan. Sebut saja asyncore, BaseHTTPServer, cgi, CGIHTTPServer, Cookie, ftplib, httplib, imaplib, nntplib, poplib, robotparser, select, SimpleHTTPServer, smtplib, socket, SocketServer, urllib, urlparse, dan webbrowser. Luar biasa! Untuk pemrograman jaringan, umumnya, kita perlu memahami tentang penggunaan low level
www.infolinux.web.id
59
sebelum menggunakan modul-modul tingkat tinggi lainnya. Untuk itulah, pada kesempatan kali ini kita akan membahas tentang modul socket dan beberapa contohnya. Modul socket sendiri menyediakan akses ke socket BSD. Walau berbasiskan UNIX, modul socket terdapat di semua platform. Pada sistem operasi UNIX, socket ini mendukung IP dan UNIX domain socket, sedangkan pada sistem lainnya hanya IP yang didukung. Berikut ini adalah fungsi di dalam modul socket: socket(family, type [, proto]) Membuat object socket yang baru mengunakan address family, socket type, dan protocol member. Address family ditunjukkan di dalam tabel berikut ini:
Konstanta AF_INET AF_UNIX Deskripsi protokol IPv4 (TCP, UDP) UNIX domain
SOCK_SEQPACKET
Sedangkan protocol member umumnya tidak dispesifikasikan. Nilai default-nya adalag 0. Protocol member adalah salah satu dari: IPPROTO_ICMP, IPPROTO_IP, IPROTO_RAW, IPPROTO_TCP, dan IPPROTO_UDP. Contoh: >>> sock = socket.socket(socket.AF_INET,
60
www.infolinux.web.id
menampilkan informasi ke layar. Sedangkan pada client, pengguna harus dapat memasukkan pesan terus menerus (diakhiri dengan pesan kosong). source code: client: import socket def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) while 1: msg = raw_input(msg to send: ) if msg: sent = sock.sendto(msg,(, 27281)) print %d sent %(sent) else: break
if __name__ == __main__: main() server: import socket def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind((, 27281)) while 1: data, address = sock.recvfrom(256) print Adress %s said %s %(address[0], data) if __name__ == __main__: main()
www.infolinux.web.id
61
if __name__ == __main__: main() server: import socket import time def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind((, 27285)) sock.listen(5) while 1: client, addr = sock.accept() print Connection from , addr client.send(time.ctime(time.time())) client.close() if __name__ == __main__: main() Demikianlah perkenalan kita dengan dasar pemrograman jaringan dengan Python. Berangkat dari dasar, semoga berkembang menjadi proyek besar.
Modul-modul lain
Seperti yang telah kita bahas, Python menyediakan sangat banyak modul standar untuk bekerja dengan pemrograman jaringan. Dan setelah kita membahas sedikit tentang modul socket, kita akan melihat deskripsi singkat modul-modul lainnya, ditambah
62
www.infolinux.web.id
server = BaseHTTPServer.HTTPServer((,27281), EchoHandler) server.serve_forever() Untuk membuat web server yang dapat menjalankan script CGI, Anda bisa menggunakan modul CGIHTTPServer. Noprianto ([email protected])
www.infolinux.web.id
63