-->

K.E ^_~ Yang lagi galau ini penawarnya link

Python Socket Programming (Part 2 Socket Server)

Tutorial part 2 tentang python socket programming. Untuk dapat mengikuti ini, saya merekomendasikan untuk membaca tutorial part 1 terlebih dahulu.
Kali ini saya akan menjelaskan tentang socket programming sisi server di python.

Pada dasarnya sisi client dan server hampir sama saja yang membedakan hanya di sisi server program harus selalu serve client atau bahasa gaulnya sebisa mungkin ga pernah koit (mateek) :lol

terus gimana biar selalu serve client??secara sederhana kita bisa buat si accept connection di taruh di looping. dari pada bingung let's code this up


#!/usr/bin/python
import socket
import sys

HOST = '127.0.0.1'
PORT = 8888
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # TCP protocol
print 'Socket created'
try:
    s.bind((HOST,PORT))
except socket.error, msg:
    print 'Bind failed: error code: %s message: %s'%(str(msg[0]),msg[1])
else:
    print 'bind completed'
    s.listen(10) # kita set untuk dapat menerima 10 connection
    while True:
        conn, addr = s.accept() # menerima connection
        print 'Connected with ' + addr[0] + ':' + str(addr[1])'
        data = conn.recv(1024) # menerima data dari client
        reply = 'send data %s' % data
        if not data:
            break
        conn.sendall(reply) # mengirim data ke client
    conn.close() # close connection
    s.close() # close socket

oke kita coba jalankan code di atas,lalu buka terminal lain atau kalau temen2 pakai windows buka cmd, kita coba lakukan telnet ke ip dan port tersebut, kurang lebihnya seperti pada gambar di bawah

running well :D tetapi code di atas masih ada kelemahannya,server hanya dapat menerima satu koneksi dalam satu waktu, menerima koneksi lalu membalas setelah itu tidak terjadi apa2.trus gimana biar server bisa menangani beberapa koneksi dalam satu waktu??kita bisa pakai module thread dari python langsung ke code aja yah ga bisa ngarang kata2 wkwk


import socket
import sys
from thread import *
 
HOST = '127.0.0.1'  
PORT = 8888 # kalau ada error port already in use ganti aja dengan port yang lain :D
 
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 untuk handle connection dan nanti kita gunakan module thread
def clientthread(conn):
    #send pesan ke client
    conn.send('Welcome to the server. Type something and hit enter\n') # mengirim string
     
    #looping sehingga function dan thread tidak berhenti
    while True:
        #menerima data dari client
        data = conn.recv(1024)
        reply = 'OK...' + data
        if not data: 
            break
        conn.sendall(reply)
    #close connection
    conn.close()
 
while 1:
    #menerima connection
    conn, addr = s.accept()
    print 'Connected with ' + addr[0] + ':' + str(addr[1])
     
    #memulai thread dan memanngil fungsi di atas
    start_new_thread(clientthread ,(conn,))
 
s.close()

coba jalankan code di atas dan seperti biasa kita coba lakukan telnet dengan beberapa terminal kurang lebihnya seperti di gambar berikut

wokeh sejauh ini kita sudah belajar socket programming dasar.pada tutorial selanjutnya kita coba bikin realtime chat dengan socket ini. thanks udah mampir di artikel cupu saya lagi :D

comment 2 komentar

  1. kalau cara membuat simple server kaya inunxlabs tau ga gan.....

    BalasHapus
  2. kalo bikin bagian "client" nya gimana gan??

    BalasHapus

Catatan:
Seluruh komentar yang masuk akan dimoderasi terlebih dahulu. Komentar yang berbau spam, kasar, menghina, seluruhnya yang bersifat menghancurkan bukan membangun tidak akan ditampilkan. Silahkan bertanya dan memberi pendapat dengan sopan dan sesuai aturan.

Anda diperbolehkan mempublikasikan ulang artikel ini, dengan syarat:
1. Mintalah izin dengan cara berkomentar di bawah artikel ini
2. Wajib menyertakan link ke artikel ini dan menyertakan nama penulis

 
© Klikedukasi 2008 - 2013 | Design by Panembahan Satyapradana | 170p3x