Tuesday, February 18, 2014

Socket Programming in Python on Linux

Pada postingan saya kali ini, saya akan mensharekan cara socket programming menggunakan bahasa Python di sistem operasi Linux. Namun sebelum mendemokan cara socket programming menggunakan bahasa Python, saya akan terlebih dahulu mendemokan cara menginstall python di Linux agar kita kelak bisa mengcompile source code yang berekstensi .py


Berikut adalah cara menginstall Python:

  1. Buka terminal, pastikan Anda terhubung dengan koneksi internet dan ketikkan perintah
    sudo apt-get build-dep python3,2
  2. Klik Y untuk melanjutkan, maka proses download akan dimulai, tunggulah hingga selesai
  3. berikutnya ketikkan perintah, sudo apt-get install libreadline-dev libncurses5-dev libssl1.0.0 tk8.5-dev zlib1g-dev liblzma-dev
  4. Klik Y untuk melanjutkan, tunggu hingga proses download selesai
  5. Ketikkan perintah wget http://python.org/ftp/python/3.3.0/Python-3.3.0.tgz
  6. Tunggu hingga proses download selesai lalu ketikkan perintah tar xvfz Python-3.3.0.tgz
  7. Ketikkan perintah,cd Python-3.3.0
  8. Ketikkan perintah, ./configure --prefix=/opt/python3.3
  9. Ketikkan perintah, make
     
  10. Ketikkan perintah sudo make install
  11. Ketikkan perintah, /opt/python3.3/bin/python3.Jika berhasil maka Anda akan mendapatkan tampilan seperti ini.
Baiklah, sekarang saatnya membuat socket programming. Program yang akan didemokan sama seperti java, yaitu program client-server 1 client dan juga client-server banyak client.
Program client-server 1 client
  1. Buka teks editor, copy paste source code dibawah ini dan save dengan nama server.py
  2.  import socket  
     import sys  
     HOST = ''  # Symbolic name meaning all available interfaces  
     PORT = 8888 # Arbitrary non-privileged port  
     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
     print 'Socket created'  
     try:  
       s.bind((HOST, PORT))  
     except socket.error , msg:  
       print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]  
       sys.exit()  
     print 'Socket bind complete'  
     s.listen(10)  
     print 'Socket now listening'  
     #wait to accept a connection - blocking call  
     conn, addr = s.accept()  
     print 'Connected with ' + addr[0] + ':' + str(addr[1])  
     #now keep talking with the client  
     data = conn.recv(1024)  
     conn.sendall(data)  
     conn.close()  
     s.close()  
     #sumber: http://www.binarytides.com/python-socket-programming-tutorial/  
    
  3. Buka terminal, pindah ke alamat tempat Anda menyimpan source code lalu compile dengan menggunakan perintah python -m py_compile server.py
  4. Run menggunakan perintah python server.pyc
  5. Buka terminal baru untuk menjadi sebua client, ketikkan perintah telnet localhost 8888
  6. Ketikkan pesan yang ingin Anda kirim, maka server akan langsung membalas dengan pesan yang sama
Baiklah itulah socket programming menggunakan python client-server 1 client. Berikutnya adalah socket programming menggunakan python client-server banyak client
  1. Buka teks editor, copy paste source code dibawah ini dan save dengan nama server2.py
  2.  import socket  
     import sys  
     from thread import *  
     HOST = ''  # Symbolic name meaning all available interfaces  
     PORT = 8888 # Arbitrary non-privileged port  
     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
     print 'Socket created'  
     #Bind socket to local host and port  
     try:  
       s.bind((HOST, PORT))  
     except socket.error , msg:  
       print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]  
       sys.exit()  
     print 'Socket bind complete'  
     #Start listening on socket  
     s.listen(10)  
     print 'Socket now listening'  
     #Function for handling connections. This will be used to create threads  
     def clientthread(conn):  
       #Sending message to connected client  
       conn.send('Welcome to the server. Type something and hit enter\n') #send only takes string  
       #infinite loop so that function do not terminate and thread do not end.  
       while True:  
         #Receiving from client  
         data = conn.recv(1024)  
         reply = 'OK...' + data  
         if not data:  
           break  
         conn.sendall(reply)  
       #came out of loop  
       conn.close()  
     #now keep talking with the client  
     while 1:  
       #wait to accept a connection - blocking call  
       conn, addr = s.accept()  
       print 'Connected with ' + addr[0] + ':' + str(addr[1])  
       #start new thread takes 1st argument as a function name to be run, second is the tuple of arguments to the function.  
       start_new_thread(clientthread ,(conn,))  
     s.close()  
     #sumber:http://www.binarytides.com/python-socket-programming-tutorial/  
    
  3. Buka terminal, pindah ke alamat tempat Anda menyimpan source code lalu compile dengan menggunakan perintah python -m py_compile server2.py
  4. Run menggunakan perintah python server2.pyc
  5. Buka 3 buah terminal, lalu ketikkan telnet localhost 8888 di masing-masing terminal untuk menjadi client untuk server yang sudah kita buat.
  6. Ketikkan pesan yang ingin Anda kirim pada masing-masing terminal, maka server akan langsung membalas dengan pesan yang sama
Sumber:

1 comment:

  1. permisi gan, saya ada sedikit tulisan mengenai protokol websocket dalam bahasa python berikut: http://datacomlink.blogspot.co.id/2015/11/script-python-websocket-rfc-6455-server.html ditunggu feedback-nya ya gan, semoga menambah wawasan bersama.. terima kasih gan..

    ReplyDelete