LAPORAN RESMI
KONSEP JARINGAN
TCP Client-Server
Disusun Oleh :
Nama : Tyas Puji Pertiwi
NRP : 2103 141 037
Kelas : 2 D3 IT B
Dosen : Bpk. Ferry Astika
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
TAHUN PELAJARAN 2015-20
1
1. ///A Simple Web Server
([Link]) 2.
3. import [Link];
4. import [Link];
5. import [Link];
6. import [Link]; 7. import [Link];
8.
9. public class webServer {
10. /**
11. * WebServer constructor.
12. */
13. protected void start() {
14. ServerSocket s;
15. int port = 8888;
16. [Link]("Webserver starting up on port " +port);
17. [Link]("(press ctrl-c to exit)");
18. try {
19. // tahap bind(),membuat socket
20. s = new ServerSocket(port);
21. } catch (Exception e) {
22. [Link]("Error: " + e);
23. return; 24. }
25.
26. [Link]("Waiting for connection");
27. for (;;) {
28. try {
29. // tahap listen(), menunggu koneksi
30. Socket remote = [Link]();
31. // tahap accept()
32. [Link]("Connection, sending data.");
33. BufferedReader in = new BufferedReader(new InputStreamReader(
34. [Link]()));
35. PrintWriter out = new PrintWriter([Link]());
36. // membaca request
37. String str = ".";
38. while ()
39. str = [Link]();
40. // Mengirim response dan mengirim HTTP headers
41. [Link]("HTTP/1.0 200 OK");
42. [Link]("Content-Type: text/html");
43.
[Link]("Server: Bot");
44. // Batas pengiriman header ditandai dengan baris kosong
45. [Link]("");
46. // Mengirim halam HTML
47. [Link]("<H1>Selamat datang di web server percobaan</H1>");
48. [Link]("<blink>Selamat datang di web server percobaan</blink>");
49. [Link]();
2
50. [Link]();
51. } catch (Exception e) {
52. [Link]("Error: " + e);
53. }
54. } 55. }
56.
57. /**
58. * Menjalankan server
59. *
60. * @param args
61. * Command line parameters are not used.
62. */
63. public static void main(String args[]) {
64. webServer ws = new webServer();
65. [Link]();
66. }
67. }
END
C.2. Program Aplikasi Chat Server dengan menggunakan TCP
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class TCPEchoServer {
private static ServerSocket servSock;
private static final int PORT = 1234;
public static void main(String args[]) {
[Link]("Membuka socket.....\n");
try {
servSock = new ServerSocket(PORT);
} catch (IOException e) {
[Link]("Gagal membuka port !!!");
[Link](1);
}
do {
run();
} while (true);
}
private static void run() {
Socket link = null;
3
try {
link = [Link]();
BufferedReader in = new BufferedReader(new
InputStreamReader([Link]()));
PrintWriter out = new PrintWriter([Link](), true);
int numMessages = 0;
String message = [Link](); 35. while () {
[Link]("Pesan diterima : [" +[Link]() + "] dalam " +
[Link]() + " bytes");
//[Link]("Message received");
numMessages++;
[Link]("Isi Pesan " + numMessages + ":" + message);
message = [Link]();
}
[Link](numMessages + " buah pesan telah diterima.");
} catch (IOException e) {
} finally {
try {
[Link]("*********Menutup koneksi ****");
[Link]();
} catch (IOException e) {
[Link]("Tidak dapat memustukan koneksi");
[Link](1);
}
}
}
}
C.3. Program Aplikasi Chat Client dengan menggunakan TCP
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class TCPEchoClient { 10.
private static String strHost;
private static InetAddress host;
private static final int PORT = 1234;
public static void main(String args[]) {
try {
// host = [Link]();
4
strHost = "[Link]" ; // <- Masukan sesuai dengan tujuan
host = [Link](strHost);
} catch (UnknownHostException e) {
[Link]("Alamat tidak ditemukan");
[Link](1);
}
run();
}
private static void run() {
Socket link = null;
try {
link = new Socket(host, PORT);
BufferedReader in = new BufferedReader(new
InputStreamReader([Link]()));
PrintWriter out = new PrintWriter([Link](), true);
BufferedReader userEntry = new BufferedReader(new
InputStreamReader([Link]));
String message, response;
do {
[Link]("Masukkan pesan : ");
message = [Link]();
[Link](message);
response = [Link]();
[Link]("SERVER " + response);
} while ();
} catch (IOException e) {
[Link]();
} finally {
try {
[Link]("Menutup Koneksi.");
[Link]();
} catch (IOException e) {
[Link]("Tidak dapat memutuskan koneksi!");
[Link](1);
}
}
}
}
5
Tyas Puji Pertiwi / 2103141037 / 2 D3-IT B 6
1. Tulis kembali program C2 dan C3 dalam editor yang anda sukai.
Analisa :
Program C2 dan C3 saya tulis kembali pada aplikasi Netbeans. Dengan nama
[Link] dan [Link]
1. Jalankan program Aplikasi Server C2! Amati perubahan yang sedang terjadi pada
komputer anda dengan menggunakan perintah pada nomor 2.
6
Tyas Puji Pertiwi / 2103141037 / 2 D3-IT B 7
Analisa :
Saat telah terhubung dengan PC lain, setelah melakukan netstat –ap TCP, Foreign
Address dari PC tujuan telah tertambahkan, yaitu RIZAL-N46VZ:7070
2. Jalankan program C3! Amati perubahan yang sedang terjadi pada komputer anda dengan
menggunakan perintah pada nomor 2.
3. Kirim 3 pesan yang berbeda. Pesan terakhir adalah “close”. Catat hasil pada aplikasi
server dan aplikasi client.
Output dari PC server :
7
Tyas Puji Pertiwi / 2103141037 / 2 D3-IT B 8
Output dari PC client :
Analisa :
Ketika program [Link] di jalankan maka muncul “Masukkan pesan :” dan
user memasukkan pesan dengan mengganti port dan IP tujuan pada program. Kemudian
pada TCPEchoServer yang telah dijalankan juga, akan diterima pesan yang dimasukkan
oleh client. Jika client ingin mengakhiri pengiriman pesan adalah dengan memasukkan
pesan close maka akan menutup koneksi antar keduanya.
TCP Flow Graph :
8
Tyas Puji Pertiwi / 2103141037 / 2 D3-IT B 9
Analisa :
TCP flow graph tersebut menunjukkan proses inisiasi koneksi antara server dan klien .
Setelah sambungan dibuat , frame data yang mulai mengalir . Rincian penting dari sebuah
frame yang ditampilkan dalam grafik aliran . Kita bisa melihat , misalnya , saat transmisi ,
ukuran frame , nomor urut dari frame dan port TCP digunakan untuk koneksi . Anda juga
dapat melihat melalui grafik ke akhir dan melihat apakah ada re - transmit karena packet loss
atau timeout .
KESIMPULAN :
Konsep dari aplikasi client-server sederhana, sebuah aplikasi client melakukan permintaan
untuk suatu layanan (service) informasi atau mengirim sebuah perintah ke suatu aplikasi
server. Aplikasi server akan menerima permintaan dari client, kemudian memproses
berdasarkan permintaan tersebut. Dari hasil pemrosesan yang sudah dilakukan, aplikasi
server akan mengembalikan hasil pemrosesan tersebut ke aplikasi client. Sehingga pada
prinsipnya aplikasi server dalam status menunggu (listen) permintaan dari aplikasi client,
sedangkan client mencoba membuat koneksi (connect) ke server.
SOCKET PROGRAMMING MULTITHREAD
B.1. Program Utama (Main Program) Aplikasi Server dengan Multithread
1.
2. import [Link];
3. import [Link];
4.
9
Tyas Puji Pertiwi / 2103141037 / 2 D3-IT B 10
5. public class TCPEchoServerThread {
6.
7. private static ServerSocket servSock; 8.
private static final int PORT = 12345;
9.
10. public TCPEchoServerThread() {
11. }
12.
13. public void start() {
14. try {
15. servSock = new ServerSocket(PORT); 16.
17. while (true) {
18. Thread clientThread = new Thread(new clientHandler([Link]()));
19. [Link]();
20. }
21. } catch (IOException e) {
22. [Link]();
23. } finally {
24. try {
25. [Link]("Menutup koneksi....");
26. [Link]();
27. } catch (IOException e) {
28. [Link]("Tidak dapat memustukan koneksi");
29. [Link]();
30. [Link](1);
31. }
32. } 33. }
34.
35. public static void main(String[] args) {
36. TCPEchoServerThread es = new TCPEchoServerThread();
37. [Link]("Server telah berjalan di komputer ini pada port " +PORT);
38. [Link]();
39. }
40. }
B.2. Program Aplikasi Server Untuk Melayani Koneksi Client
1. import [Link];
2. import [Link];
3. import [Link];
4. import [Link]; 5. import [Link].*;
6.
7. class clientHandler implements Runnable {
8.
9. private static int
numConnections;
10. private int connectionId = 0; 11.
Socket link;
10
Tyas Puji Pertiwi / 2103141037 / 2 D3-IT B 11
12.
13. public clientHandler(Socket s) {
14. connectionId = numConnections++;
15. [Link]("Melayani koneksi ke-"+ connectionId);
16. link = s; 17. }
18.
19. public void run() {
20. PrintWriter out = null;
21. BufferedReader in = null;
22. int numMessages = 0;
23.
24. try {
25. out = new PrintWriter([Link](), true);
26. in = new BufferedReader(new InputStreamReader([Link]()));
27. String message=[Link]();
28. while ( ) {
29. [Link]("Pesan diterima : [" +[Link]() + "] dari client " +
connectionId +" dalam " + [Link]() + " bytes");
30. numMessages++;
31. [Link]("Isi Pesan " + numMessages + ":" + message);
32. message = [Link]();
33. }
34. } catch (Exception e) {
35. [Link]();
36. } finally {
37. [Link]();
38. try {
39. [Link]();
40. [Link]();
41. [Link]("Menutup koneksi, #" + connectionId);
42. } catch (IOException e) {
43. [Link]();
44. }
45. }
46. }
A. PC Established
11
Tyas Puji Pertiwi / 2103141037 / 2 D3-IT B 12
Analisa :
Perintah “netstat -ap TCP” digunakan untuk mengetahui status PC. Saat program client
di jalankan juga, server telah menerima PC yang telah terhubung dan menerima pesan
dari PC tersebut dan sudah dalam keadaan ESTABLISHED. Tiga buah PC yang
terhubung adalah IFA : 51073, Teesa-PC : 49846, dan [Link]:http
B. Pesan yang di terima oleh Server dari masing-masing PC :
12
Tyas Puji Pertiwi / 2103141037 / 2 D3-IT B 13
13
Tyas Puji Pertiwi / 2103141037 / 2 D3-IT B 14
Analisa :
Server bisa menerima lebih dari 1 buah pesan client yang berbeda. Berbeda dengan
program sebelumya yaitu tiap server hanya bisa melayani satu koneksi. Pada praktikum
ini server mempunyai kemampuan menerima koneksi lebih dari satu. Seperti hal nya
gambar di atas yang merupakan 3 buah pesan yang diterima oleh PC server dari 3 client.
C. Wireshark Filter IP :
Client 1 :
14
Tyas Puji Pertiwi / 2103141037 / 2 D3-IT B 15
Client 2 :
Client 3 :
Analisa :
Pada wireshark ketika program server dan client dijalankan serta sailing mengirim pesan
maka akan muncul tampilan seperti di atas. Untuk memfilter, jika hanya ingin
menampilkan dari PC Client tertentu maka cukup ditulis [Link]==”ip_Address_tujuan”
15
Tyas Puji Pertiwi / 2103141037 / 2 D3-IT B 16
seperti yang pada gambar diatas. Kemudian di bagian bawah akan muncul keterangan
tentang TCP, yaitu source port, destination port, sequence number, acknowledgment
number, dan header length seperti gambar diatas.
D. Flow Graph dari masing-masing client
Client 1 :
Client 2:
16
Tyas Puji Pertiwi / 2103141037 / 2 D3-IT B 17
Client 3 :
Analisa :
Analisa :
TCP Flow Graph menunjukkan proses inisiasi koneksi antara server dan klien . Setelah
sambungan dibuat , frame data yang mulai mengalir . Rincian penting dari sebuah frame
yang ditampilkan dalam grafik aliran . Kita bisa melihat , misalnya , saat transmisi ,
ukuran frame , nomor urut dari frame dan port TCP digunakan untuk koneksi . Anda juga
dapat melihat melalui grafik ke akhir dan melihat apakah ada re - transmit karena packet
loss atau timeout .
17