Sesuai dengan standar prosedur, siapkan text editor terlebih dahulu.
Berbeda dengan bahasa Java dan C, kita mengeset Port number dengan sebuah file lain yang diberi nama config.py berikut ini kodenya
# config.pyPORT=2014
source : http://pythonadventures.wordpress.com/2013/07/06/a-basic-socket-client-server-example/
Ketik kode di atas, lalu simpan sebagai config.py
Kemudian ketikkan kode berikut untuk membuat server
#!/usr/bin/env python # server.py import socket import select import config as cfg import Queue from threading import Thread from time import sleep from random import randint import sys class ProcessThread(Thread): def __init__(self): super(ProcessThread, self).__init__() self.running = True self.q = Queue.Queue() def add(self, data): self.q.put(data) def stop(self): self.running = False def run(self): q = self.q while self.running: try: # block for 1 second only: value = q.get(block=True, timeout=1) process(value) except Queue.Empty: sys.stdout.write('.') sys.stdout.flush() # if not q.empty(): print "Elements left in the queue:" while not q.empty(): print q.get() t = ProcessThread() t.start() def process(value): """ Implement this. Do something useful with the received data. """ print value sleep(randint(1,9)) # emulating processing time def main(): s = socket.socket() # Create a socket object host = socket.gethostname() # Get local machine name port = cfg.PORT # Reserve a port for your service. s.bind((host, port)) # Bind to the port print "Listening on port {p}...".format(p=port) s.listen(5) # Now wait for client connection. while True: try: client, addr = s.accept() ready = select.select([client,],[], [],2) if ready[0]: data = client.recv(4096) #print data t.add(data) except KeyboardInterrupt: print print "Stop." break except socket.error, msg: print "Socket error! %s" % msg break # cleanup() def cleanup(): t.stop() t.join() ######################################################### if __name__ == "__main__": main()
source : http://pythonadventures.wordpress.com/2013/07/06/a-basic-socket-client-server-example/
Simpan file dengan format .py, admin menyimpan dengan nama listenserver.py
Selanjutnya ketikkan lagi kode berikut untuk membuat client.
#!/usr/bin/env python# client.pyimport config as cfgimport sysimport socketdef main(elems):try:for e in elems:client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)host = socket.gethostname()client.connect((host, cfg.PORT))client.send(e)client.shutdown(socket.SHUT_RDWR)client.close()except Exception as msg:print msg#########################################################if __name__ == "__main__":main(sys.argv[1:])
source : http://pythonadventures.wordpress.com/2013/07/06/a-basic-socket-client-server-example/
Setelah selesai buka terminal, ubah direktori ke tempat file server,client,dan config berada. Gunakan perintah
cd lokasi
Masukan perintah
python nama_file_server.py
nama file yang admin gunakan listenserver.py berikut ini gambarnya
Akan muncul tulisan listening dan karakter "." yang bertambah terus. Hal ini berarti server kita telah berjalan dan menunggu informasi dari client.
Buka jendela terminal baru, ubah direktori seperti langkah di atas, kemudian masukan perintah
python nama_file_client.py data1 data2 data3 ...
Nama file yang admin gunakan yaitu listenclient. Data dapat berupa huruf atau angka dengan urutan sembarang. berikut ini gambarnya
Data yang kita kirim melalui client akan dimunculkan satu per satu di jendela terminal server dengan urutan sesuai yang kita ketikkan pada jendela terminal client. Selamat anda berhasil :D
sumber : http://pythonadventures.wordpress.com/2013/07/06/a-basic-socket-client-server-example/
Tidak ada komentar:
Posting Komentar