Testing TCP & UDP, Python

Sekitar 1-2 minggu yang lalu, pas di awal liburan Natal, gw nyoba belajar network programming pake Python. Lalu gw nyobain bikin program untuk buka koneksi TCP & untuk kirim-kiriman data teks pake UDP.

Untuk TCP, gw bikin dua script Python: satu untuk server, satu lagi untuk client. Ini gw buat berdasarkan tutorial-tutorial dasar network programming pakai Python yang gw udah baca di Internet. Begini source code servernya.

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('localhost', 50000))
server.listen(1)

print socket.gethostname(), 'now listening...'
while 1:
    print 'Waiting for connection...'
    (client, address) = server.accept()
    print 'Connection established with', address
    print ''

Lalu gw bikin script Python untuk clientnya. Begini isinya.

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('localhost', 50000))
s.close()

Kalau gw run di komputer gw, tampilan servernya nanti kayak begini.

Edwin-PC now listening...
Waiting for connection...
Connection established with ('127.0.0.1', 3833)

Waiting for connection...

Connection established with ('127.0.0.1', 3835)

Waiting for connection...

Tiap kali script client dijalanin, kalo servernya jalan, servernya bakal ngeluarin satu baris string output “Connection established with ([IP_client], [port])”. IPnya 127.0.0.1 karena gw nyobainnya dalam satu komputer lewat localhost.

Untuk UDP, gw nyobain bikin program untuk kirim-kiriman pesan lewat jaringan. Untuk percobaannya, gw masih pakai localhost untuk kirim-kiriman data di satu komputer yang sama. Di sini gw bikin dua script, satu program untuk nerima pesan, satu lagi untuk ngirimnya. Ini script untuk nerima pesannya.

import socket

IP = "127.0.0.1"
PORT = 50000

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((IP, PORT))

while True:
    data, address = sock.recvfrom(1024)
    print "received message:", data

Yang ini script untuk ngirim teksnya.

import socket

IP = "127.0.0.1"
PORT = 50000
print "Destination IP:", IP
print "Destination port:", PORT

while True:
    data = raw_input("Message: ")

    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.sendto(data, (IP, PORT))

Untuk program kirim-kiriman teks pake UDP ini belum gw coba lewat LAN beneran, tapi harusnya lancar-lancar aja. Ini contoh tampilan program untuk ngirim datanya.

Destination IP: 127.0.0.1
Destination port: 50000
Message: tes
Message: ahaha
Message:

String “tes” & “ahaha” di atas itu teks yang kita input untuk dikirim. Kalau waktu kita ngirim datanya program untuk nerima teksnya udah jalan, nanti tampilan yang keluar kayak begini.

received message: tes
received message: ahaha

Untuk program yang pakai UDP ini, kalau IP & portnya diset ke komputer lain yang punya program yang sama, seharusnya bisa dipakai untuk chatting di LAN. Tapi karena dibuatnya pakai UDP, kalau ada gangguan di jaringan mungkin aja datanya nggak sampai ke tujuan & yang ngirim juga nggak tau kalo ada masalah waktu pengirimannya.

Berhubung sekarang gw masih agak sibuk ngurusin tugas-tugas kuliah, mungkin ntar baru gw bakal coba bikin program chatting yang pake TCP.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s