Rabu, 02 Mei 2012

SMTP (simple mail transfer protocol) dengan Java



              Kali ini kita akan membahas tentang SMTP tetapi khusus untuk client. Simple Mail Transfer Protocol (SMTP) adalah sebuah standar Internet untuk surat elektronik (e-mail) transmisi internet (IP) jaringan Protokol. SMTP pertama kali didefinisikan oleh RFC 821 (1982, akhirnya menyatakan STD 10), dan terakhir diperbarui oleh RFC 5321 (2008) yang meliputi SMTP diperpanjang (ESMTP) penambahan, dan merupakan protokol yang digunakan secara luas saat ini. 

Listing Program :

import java.io.*;
import java.net.*;
public class smtpClient{
public static void main (String[] argv)
{
 Socket smtpSocket=null;
 DataOutputStream os=null;
BufferedReader is=null;
try
{
smtpSocket= new Socket("mail.uajy.ac.id",25);
os=new DataOutputStream (smtpSocket.getOutputStream());
is=new BufferedReader (new
InputStreamReader (smtpSocket.getInputStream()));
}
catch(UnknownHostException e){
System.err.println("Nama komputer tidak dikenali");
}
catch (IOException e){
System.err.println("Tidak dapat melakukan operasi io");
if(smtpSocket!=null && os!=null && is!=null)
try{

//mengirim dan mencetak pesan
System.out.println(is.readLine());
os.writeBytes("HELLO\r\n");
System.out.print("HELLO\n");
System.out.println(is.readLine());
os.writeBytes("MAIL FROM:any@mail\r\n");
System.out.print("MAIL FROM:any@mail\n");
System.out.println(is.readLine());
os.writeBytes("RCPT To:kusnadi@mail.uajy.ac.id\r\n");
System.out.print("RCPT To:kusnadi@mail.uajy.ac.id\n");
System.out.println(is.readLine());
os.writeBytes("DATA\r\n");
System.out.print("DATA\n");
System.out.println(is.readLine()); 
os.writeBytes("From: any@mail\r\n");
System.out.print("From: any@mail\n");
System.out.println(is.readLine());
os.writeBytes("Subject: testing\r\n");
System.out.print("Subject: testing\n");
System.out.println(is.readLine());
os.writeBytes("Hi, ini percobaan kirim email.\r\n");
System.out.print("Hi, ini percobaan kirim email.\n");
System.out.println(is.readLine());
os.writeBytes("\r\n\r\n");
System.out.print(".\n");
System.out.println(is.readLine());
os.writeBytes("QUIT\r\n");
System.out.print("QUIT\n");
System.out.println(is.readLine());
//menutup semua object
os.close();
is.close();
smtpSocket.close();
}catch(UnknownHostException e){
System.err.println("Nama komputer tidak dikenali");
}catch(IOException e){
System.err.println("Tidak dapat melakukan operasi io");
}
}
}


Setelah file java disimpan maka langkah selanjutnya kita buka command prompt (CMD). Dicmd kita masuk pada direktori dimana file smptClient.java kita simpan.




setelah program di run 

Aplikasi Client-Server sederhana menggunakan Java




Pada kesempatan kita akan mencoba membangun suatu interaksi antara client dan server dalam suatu computer. Pada percobaan ini kita hanya menggunakan 1 komputer saja, karena hanya program sederhana dan hanya untuk pembelajaran. Program ini mempunyai dua coding yang berbeda yaitu simpleServer.java dan simpleClient.java. Keduanya kita buat pada sebuah notepad dengan nama berbeda. Masing-masing listingnya adalah sebagai berikut: 

Coding simpleServer.java :

import java.io.*;
import java.net.*;
public class simpleServer {
public final static int TESTPORT = 5000;
public static void main(String args[]) {
ServerSocket checkServer = null;
String line;
BufferedReader is = null;
DataOutputStream os = null;
Socket clientSocket = null;
try {
checkServer = new ServerSocket (TESTPORT);
System.out.println("Aplikasi Server hidup... ");
} catch (IOException e) {
System.out.println(e);
}
try {
clientSocket = checkServer.accept();
is = new BufferedReader (new InputStreamReader(clientSocket.getInputStream()));
os = new DataOutputStream(clientSocket.getOutputStream());
} catch (Exception ei) {
ei. printStackTrace();
}
try {
line = is.readLine();
System.out.println ("Terima : " + line);
if (line.compareTo("salam") == 0 ) {
os.writeBytes("salam juga");
} else {
os.writeBytes("Maaf, saya tidak mengerti");
}
} catch (IOException e) {
System.out.println(e);
}
try {
os.close();
is.close();
clientSocket.close();
} catch (IOException ic) {
ic.printStackTrace();
}
}
}

Coding simpleClient.java :

import java.io.*;
import java.net.*;
public class simpleClient {
public final static int REMOTE_PORT = 5000;
public static void main (String args[]) throws Exception {
Socket cl = null;
BufferedReader is = null;
DataOutputStream os = null;
BufferedReader stdin = new BufferedReader(new
InputStreamReader(System.in));
String userInput = null;
String output = null;
// Membuka koneksi ke server pada port REMOTE_PORT
try {
cl = new Socket(args[0], REMOTE_PORT);
is = new BufferedReader(new
InputStreamReader(cl.getInputStream ()));
os = new DataOutputStream(cl.getOutputStream());
} catch(UnknownHostException e1) {
System.out.println("Unknown Host: " + e1);
} catch (IOException e2) {
System.out.println("Erorr io: " + e2);
}
// Menulis ke server
try {
System.out.print("Masukkan kata kunci : ");
userInput = stdin.readLine() ;
os.writeBytes(userInput + "\n");
} catch (IOException ex) {
System.out.println("Error writing to server... " + ex);
}
// Menerima tanggapan dari server
try {
output = is.readLine() ;
System.out.println("Dari server: " + output);
} catch (IOException e) {
e.printStackTrace() ;
}
// close input stream, output stream dan koneksi
try {
is.close();
os.close();
cl.close();
} catch (IOException x) {
System.out.println("Error writing...." + x);
}
}

simpleServer di run 

simpleClient di run 

Program Java melihat IP melalui nama PC anda



koding 

setelah di run 


Pada tulisan ini akan membuat suatu program java untuk menampilkan IPkomputer kita tetapi berdasarkan nama komputer.Pertama yang harus dilakukan adalah kita ketik coding seperti dibawah ini dan simpan dengan namaNsLookup.java. Pada program ini kita akan simpan di direktori  yang kita ingin kan lalu panggil sesuai dengan nama classnya di cmd maka hasilnya akan seperti gambar setelah di run 
.