Basic Set up Diagram:

Basic Set up Diagram:

Berikut adalah diagram set up dasar untuk menjalankan program ini.

Untuk mempermudah, kami akan memanggil Sistem A sebagai A_client dan Sistem B sebagai B_server di seluruh artikel.

Persyaratan berkas:

Kita butuh server.pydan file ini harus ada di sistem server. Dalam kasus kami server.py harus di sistem B_server.

Dua file lagi client.py dan sample.txtharus ada di sistem client. Dalam kasus kami, kedua file tersebut harus ada di sistem A_client.

Assumptions:

Berikut asumsinya:

  • Kita harus memiliki dua sistem Linux dengan akses terminal.
  • Rasa Linux yang disukai adalah Ubuntu.
  • Python3 harus diinstal.
  • Kedua sistem Linux harus dapat melakukan ping satu sama lain. Menggunakanping <Other system IP> perintah untuk memeriksa ping.
  • Satu sistem harus bertindak sebagai Server dan sistem lain harus bertindak sebagai client pada satu waktu tertentu.

Limitations:

Sebelum kita melangkah lebih jauh kita harus tahu bahwa ada beberapa keterbatasan dari program ini.

  • Python3+ harus diinstal untuk menjalankan program ini. Anda mungkin mengamati error atau perilaku yang berbeda jika dijalankan pada versi python yang lebih lama.
  • Hanya file teks yang dapat ditransfer melalui program ini untuk saat ini. File format lain yang tidak berisi teks mungkin gagal.
  • Pengecualian pemrograman dasar telah ditangani dalam program.
  • Program mungkin atau mungkin tidak berjalan di OS lain selain Ubuntu.
  • File teks harus pendek di sisi client karena ukuran buffer 1024 byte telah digunakan.

Set up requirements:

  • Kami membutuhkan setidaknya satu sistem Linux untuk mencoba program ini. Tetapi rekomendasinya adalah menggunakan dua sistem Linux yang berbeda yang terhubung melalui jaringan.
  • Dua sistem harus terhubung melalui Ethernet atau Wi-Fi atau koneksi lainnya.

Server Source Code:

https://github.com/linuxhintcode/websamples/blob/master/python_send_file/server.py

Client Source Code:

https://github.com/linuxhintcode/websamples/blob/master/python_send_file/client.py

How to run programs and expected output:

Berikut adalah langkah-langkah untuk mengeksekusi program.

Langkah1: Buka sistem B_server dan buka terminal. Jalan pintas untuk membuka terminal adalahAlt+Ctrl+t.

Langkah2: Sekarang pergi ke jalur di mana server.py hadir.

Langkah3: Sekarang jalankan server.py seperti di bawah ini

python3 server.py

Seharusnya tidak ada error dan Anda akan melihat cet
akan di bawah ini

Server is listing on port : 9898

Nama file yang dicopy akan menjadi recv.txt di sisi server

Langkah4: Sekarang buka terminal di sistem A_client.

Langkah5: Buka jalur tempat client.py dan sample.txt hadir.

Langkah6: Sekarang jalankan client.py seperti di bawah ini

python3 client.py <B_server system IP>

Kami telah mengamati bahwa kami perlu mengetahui alamat IP server. Kita dapat menjalankan perintah di bawah ini untuk mengetahui alamat IP sistem B_server.

ifconfig

Sekarang output dari sistem A_client harus seperti ini

################## Below message is received from server ##################
|---------------------------------|
Hi Client[IP address: 192.168.1.102],
**Welcome to Server**
-Server
|---------------------------------|

Langkah7: Sekarang buka B_server dan cari output di bawah ini

File has been copied successfully
Server closed the connection

Step8: Seharusnya ada satu nama file recv.txt di folder server. Isi recv.txt ini harus sample.txt yang sama.

Jadi kami telah berhasil menyalin file dari client ke server melalui jaringan melalui program python.

Penjelasan kode:

Ada dua file python server.py dan client.py.

Perhatikan bahwa kami akan menjelaskan sekali jika ada kode yang sama di dalam server.py dan client.py.

  1. server.py:
#!/usr/bin/env python3

Ini adalah baris Shebang yang berarti secara default server.py ini harus menggunakan python3. Mari kita lihat satu keuntungan dari garis ini.

Kami telah menjalankan server.py atau client.py seperti python3 <.py file name>. Sekarang tanpa menggunakan python3 kita bisa mengeksekusi file python. Ikuti perintah di bawah ini

Pergi ke cara user super:

su

Berikan semua izin ke file.py:

 chmod 777 server.py

Jalankan server.py:

./server.py
import socket
Importing socket library into python program as we are going
to use socket for connection.

s = socket.socket()

Kami sedang membuat objek “s”untuk mengakses semua metode socket. Ini adalah konsep OOP.

PORT = 9898

Sekarang kita memilih satu port dimana server akan mendengarkan. Kami dapat menggunakan port yang tidak dipesan sebagai gantinya.

s.bind(('', PORT))

Kami menggunakan metode bind untuk mengikat alamat ip server ke port tersebut [9898]. Satu pengamatan adalah kami dapat menggunakan alamat IP server yang tepat sebagai pengganti argumen pertama metode pengikatan tetapi kami memilih untuk membiarkannya kosong karena ini berfungsi dengan baik.

s.bind((IP address, PORT))
file = open("recv.txt", "wb")

Kami telah membuka satu nama file “recv.txt” di server untuk cara tulis dan mendapatkan penunjuk file. Ini diperlukan karena kita harus menyalin satu file teks dari client.

while True:

Mari kita mulai satu loop while tak terbatas karena tugas server adalah menunggu sampai client berkomunikasi dengan server pada port 9898 itu. Jadi loop while ini diperlukan.

conn, addr = s.accept()

Kode ini untuk menerima permintaan koneksi yang masuk dari client. Conn akan menggunakan “conn” untuk berkomunikasi dengan client dan “addr” adalah alamat IP client yang telah mengirim permintaan keributan ke server ini pada port 9898.

msg = "nn|---------------------------------|n Hi Client[IP address:
 "+ addr[0] + "], n **Welcome to Server** n -Servern
|---------------------------------|n nn"

Kode ini untuk membuat pesan untuk dikirim ke client. Pesan ini harus dicetak pada terminal client. Ini menegaskan bahwa client dapat berkomunikasi dengan server.

conn.send(msg.encode())

Sekarang kami memiliki pesan yang siap, dan kemudian mengirimkannya ke client menggunakan itu “conn”. Kode ini sebenarnya mengirim pesan ke client.

RecvData = conn.recv(1024)

Kode ini menerima data apa pun yang dikirim dari sisi client. Dalam kasus kami, kami mengharapkan konten sample.txt di“RecvData”.

while RecvData:

Satu lagi while loop dengan syarat RecvData tidak kosong. Dalam kasus kami itu tidak kosong.

file.write(RecvData)

Setelah kami memiliki konten di dalamnya “RecvData” lalu kami menulis ke file itu “recv.txt” menggunakan penunjuk file “file”.

RecvData = conn.recv(1024)

Sekali lagi mencoba menerima jika ada data dari client. Sekali“RecvData” tidak memiliki data, kode akan memutus loop while.

file.close()

Ini hanya akan menutup penunjuk file saat kita selesai menulis file.

conn.close()

Ini akan menutup koneksi dengan client.

break

Ini untuk keluar dari loop while tak terbatas di B_server.

  1. client.py:
import sys

Mengimpor perpustakaan sys seperti yang kita inginkan menggunakan fasilitas argumen di python.

if (len(sys.argv) > 1):
  ServerIp = sys.argv[1]
else:
  print("nn Run like n python3 client.py < serverip address > nn")
  exit(1)

Saat kami melewati alamat IP B_server setelah nama file client.py saat berjalan, kami perlu menangkap alamat IP server itu di dalam client.

…..if (len(sys.argv) > 1): => Untuk memastikan user melewati setidaknya satu argumen sebagai alamat IP dan menangkap alamat IP itu secara insdie “ServerIP”.

Jika user tidak lulus setidaknya satu kode argumen menunjukkan bantuan dan keluar dari kode.

PORT = 9898

Ini harus port yang sama seperti yang disebutkan di sisi B_server.

s.connect((ServerIp, PORT))

Kode ini akan melakukan koneksi TCP ke IP server dengan port tersebut. Apa pun yang salah pada titik ini menghasilkan kegagalan dalam hubungannya.

file = open("sample.txt", "rb")

Kami membuka “sample.txt” dalam cara baca untuk membaca konten saja.

SendData = file.read(1024)

Membaca isi file dan memasukkan ke dalam “SendData” variabel.

while SendData:

Kami memulai satu while loop jika “SendData”memiliki data. Dalam kasus kami jika “sample.txt” tidak kosong, itu harus memiliki data.

s.send(SendData)

Sekarang kami dapat mengirim konten “sample.txt” ke server menggunakan objek socket “s”.

SendData = file.read(1024)

Sekali lagi membaca jika ada sesuatu yang tersisa. Jadi tidak akan ada yang bisa dibaca dari file“SendData” akan kosong dan akan keluar dari while loop.

s.close()

Ini tidak menutup koneksi dari sisi client.

Tangkapan Layar Ubuntu Sisi Server

Tangkapan Layar Ubuntu Sisi client

Tested combinations:

  • Linux sebagai server dan Linux sebagai client: LULUS
  • Linux sebagai client dan Linux sebagai server: LULUS
  • Linux sebagai server dan Windows10 sebagai client: LULUS
  • Linux sebagai client dan Windows10 sebagai server: LULUS

Rekomendasinya adalah menggunakan dua sistem Linux untuk server dan client.

Expected Errors:

  1. Anda dapat melihat error di bawah ini jika server tidak berjalan pada port 9898

Traceback (panggilan terakhir terakhir):

File "client.py", line 22, in <module>
s.connect((ServerIp, PORT))
ConnectionRefusedError: [Errno 111] Connection refused
  1. Error di bawah ini terlihat jika alamat IP tidak diteruskan di sisi client

Jalankan seperti

python3 client.py < serverip address >
  1. Error di bawah ini terlihat jika argumen pertama di sisi client bukan alamat IP

Traceback (panggilan terakhir terakhir):

File "client.py", line 22, in <module>
s.connect((ServerIp, PORT))
socket.gaierror: [Errno -2] Name or service not known
  1. Di bawah ini terlihat error jika port digunakan seperti 98980

Traceback (panggilan terakhir terakhir):

File "client.py", line 22, in <module>
s.connect((ServerIp, PORT))
OverflowError: getsockaddrarg: port must be 0-65535.
  1. Error di bawah ini terlihat jika “sample.txt” tidak ada di sisi client.

Traceback (panggilan terakhir terakhir):

File "client.py", line 25, in <module>
file = open("sample.txt", "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'sample.txt'

Kesimpulan:

Dengan menggunakan program ini kita dapat mengirim file teks sederhana dari satu sistem ke sistem lain melalui jaringan menggunakan program python. Ini memberi kita pembelajaran dasar tentang pemrograman python dan soket juga untuk mengirim data melalui jaringan.

Related Posts