Anda di halaman 1dari 3

aplikasi pengirim gambar:

//Baris-baris pertama adalah impor berbagai pustaka dan kelas yang diperlukan untuk aplikasi, seperti IO,
socket, GUI, dan lainnya.
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

//Deklarasi kelas ImageSender dimulai di sini.


public class ImageSender {

//Variabel socket digunakan untuk mengelola koneksi socket dengan penerima gambar.
dos adalah objek DataOutputStream yang digunakan untuk mengirim data melalui socket,
dan fis adalah objek FileInputStream yang digunakan untuk membaca berkas gambar yang akan dikirim.
private JFrame frame;
private JButton sendButton;

//frame adalah objek JFrame yang akan digunakan untuk antarmuka aplikasi, dan sendButton adalah tom
bol "Send Image".
private JFrame frame;
private JButton sendButton;

//Dalam konstruktor ImageSender, sebuah JFrame dengan judul "Image Sender" dibuat.
anda mengatur operasi penutupan frame dengan setDefaultCloseOperation sehingga aplikasi akan berhe
nti saat frame ditutup.
Ukuran frame juga diatur.
public ImageSender() {
frame = new JFrame("Image Sender");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 200);

//Kemudian, tombol "Send Image" dibuat dan ActionListener ditambahkan ke tombol ini. ActionListener ini
akan memanggil metode sendImage ketika tombol ditekan.
sendButton = new JButton("Send Image");
sendButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sendImage();
}
});

//Tombol "Send Image" ditambahkan ke frame di bagian tengah menggunakan layout BorderLayout.
frame.add(sendButton, BorderLayout.CENTER);

//Terakhir, frame ditampilkan agar aplikasi dapat dijalankan dan dilihat oleh pengguna.
frame.setVisible(true);
}

//Metode sendImage dipanggil saat tombol "Send Image" ditekan. Di dalam metode ini, kita mencoba me
mbuat koneksi socket ke alamat IP penerima dengan port yang ditentukan.
private void sendImage() {
try {
socket = new Socket("IP_PENERIMA", PORT_PENERIMA);
//Setelah koneksi socket berhasil dibuat, kita membuat objek DataOutputStream untuk mengirim data mel
alui socket.
dos = new DataOutputStream(socket.getOutputStream());

//Kemudian, kita membuat objek JFileChooser untuk memungkinkan pengguna memilih berkas gambar y
ang akan dikirim.
showOpenDialog digunakan untuk menampilkan dialog pemilih berkas dan mengembalikan nilai yang me
nunjukkan apakah pengguna memilih berkas atau tidak.
JFileChooser fileChooser = new JFileChooser();
int returnValue = fileChooser.showOpenDialog(null);

//Kita memeriksa apakah pengguna telah memilih berkas (kembali dari JFileChooser dengan nilai APPRO
VE_OPTION).
Jika demikian, kita mendapatkan berkas yang dipilih oleh pengguna.
if (returnValue == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();

//Kemudian, kita membuat objek FileInputStream untuk membaca berkas gambar yang akan dikirim.
fis = new FileInputStream(selectedFile);

//menggunakan FileInputStream untuk membaca berkas gambar dalam potongan-potongan (buffer),


dan kemudian kami menggunakan DataOutputStream untuk mengirim potongan-potongan tersebut melal
ui koneksi socket ke penerima.
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
dos.write(buffer, 0, bytesRead);
}

//Jika pengguna berhasil memilih berkas dan pengiriman gambar selesai, kita menampilkan pesan dialog
yang menginformasikan bahwa gambar telah dikirim dengan sukses.
}
JOptionPane.showMessageDialog(frame, "Image sent successfully.");

//menangani berbagai jenis kesalahan yang mungkin terjadi selama operasi pengiriman gambar, seperti k
esalahan jaringan atau kesalahan IO.
} catch (Exception e) {
e.printStackTrace();
}

// finally blok digunakan untuk memastikan bahwa sumber daya yang digunakan (seperti aliran berkas d
an socket) ditutup dengan benar, terlepas dari apakah terjadi kesalahan atau tidak.

} finally {
try {
if (fis != null) fis.close();
if (dos != null) dos.close();
if (socket != null) socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}

//Metode main adalah tempat aplikasi dimulai. Di dalam metode main, kita menggunakan SwingUtilities.
invokeLater untuk menjalankan aplikasi dalam EDT (Event Dispatch Thread), yang diperlukan untuk aplik
asi GUI.
Dalam kasus ini, membuat instance dari kelas ImageSender untuk memulai aplikasi.
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new ImageSender();
}
});
}
}

Anda mungkin juga menyukai