Socket Programming di Java
Kali ini
akan saya tampilkan tutorial pemrograman socket menggunakan bahasa java.
Ada dua
program yang berjalan di dua komputer berbeda, dan akan saling bertukar pesan
“Hello World”.
Client.java
Pertama kita import header yang
diperlukan
package clientsocket;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
Di bawah deklarasi kelas, buatlah
sebuah blok exception, lalu kita buat sebuah variabel yang akan kita gunakan
untuk menyimpan string yang akan kita kirim ke Server. Dalam contoh adalah
“Hello World!”
public class ClientSocket {
public
static void main(String[] args) {
try
{
String myrespon = "Hello World!\r\n";
Lalu buat sebuah variabel bertipe
Socket. Lalu isiskan alamat ip dan port yang akan kita gunakan.
Socket s = new Socket("10.151.43.185", 5136);
Kemudian buat dua variabel bertipe
InputStream dan OutputStream. InputStream berfungsi sebagai penerima data yang
dikirimkan dari komputer lain, sedangkan OutputStream berfungsi sebagai
pengirim pesan ke komputer lain.
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream()
Fungsi berikut akan membuat
OutputStream yang telah kita buat untuk mengirimkan variabel pesan kita.
OutputStream hanya menerima data bertipe bytes, jadi kita gunakan method getBytes() untuk mengubah string
menjadi bytes.
os.write(myrespon.getBytes());
Selanjutnya kita buat sebuah
integer yang akan digunakan sebagai penerjemah pesan dari server. Lalu buat
sebuah loop yang ketika berjalan, ia akan membaca data dari InputStream dan
menyimpannya dalam integer yang selanjutnya akan diubah menjadi char dan
langsung ditampilkan ke layar. Jika integer yang telah diubah ke char tersebut
bernilai “\n”, maka loop akan dihentikan.
int c;
while(true)
{
c = is.read();
System.out.print((char)c);
if((char)c == '\n') break;
}
Kemudian kita tutup semua Stream
yang telah kita buat dan soket itu sendiri.
os.close();
is.close();
s.close();
Terakhir, kita buat penutup dari
exception yang telah kita buat di atas.
}
catch (UnknownHostException ex) {
Logger.getLogger(ClientSocket.class.getName()).log(Level.SEVERE, null,
ex);
}
catch (IOException ex) {
Logger.getLogger(ClientSocket.class.getName()).log(Level.SEVERE, null,
ex);
}
}
}
Server.java
Seperti biasa, kita import
terlebih dulu header yang diperlukan
package socketserver;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
Sebenarnya, program server tidak
jauh beda dari client, bedanya, jika client adalah pihak yang meminta koneksi,
maka server adalah pihak yang menyetujui koneksi. Maka kita buat lagi variabel bertipe socket
dan satu lagi variabel baru bertipe ServerSocket.
public class SocketServer {
public
static void main(String[] args) {
try {
Socket s = new Socket("10.151.34.185",5136);
ServerSocket ss = new ServerSocket(5136);
Fungsi di bawah akan membuat socket yang telah kita buat untuk
disetujui oleh ServerSocket yang kita buat.
s
= ss.accept();
Seperti client, kita juga buat dua
buah Stream untuk input dan output, dan pesan kita.
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream();
String respon = "Hello World!\r\n";
Kita juga buat sebuah loop yang
akan memeriksa pesan masuk dari client
int c;
while(true)
{
c = is.read();
System.out.print((char)c);
if((char)c == '\n')
break;
}
Terakhir kita kirim pesan respon
server kembali ke client. Tambahkan flush untuk merefresh stream kita.
os.write(respon.getBytes());
os.flush();
Tutup Semua stream dan socket
os.close();
is.close();
s.close();
ss.close();
Dan terakhir, tutup exception yang
kita buat
}
catch (IOException ex) {
Logger.getLogger(SocketServer.class.getName()).log(Level.SEVERE, null,
ex);
}
}
}
0 Comments:
Post a Comment