Senin, 22 Mei 2017




MultiChat




Pertama, Siapkan aplikasi untuk menuliskan perintah coding.

Jika menggunakan Sistem Operasi Windows, anda bisa menggunakan Textpad /

Notepad kemudian akan di Compile/ Execute dengan Java.

Jika menggunakan Linux, anda bisa menggunakan Geany / Notepadqq kemuadian akan di Compile /Execute dengan Java.


Lalu Tulis Perintah Coding seperti ini:

Syntax yang pertama, ChatServer:
import java.io.*;
import java.net.*;import java.util.*;


public class ChatServer {
private static int uniqueId;
private ArrayList<ChatServer.ClientThread> clients;
private int port;
private boolean keepGoing;
public ChatServer() {
this.port = 9999;
clients = new ArrayList();
}



public void start() {
keepGoing = true;
try {

ServerSocket serverSocket = new ServerSocket(port);
while (keepGoing) {
System.out.println("ChatServer waiting for Clients on port " + port + ".");
Socket socket = serverSocket.accept();
if (!keepGoing) {
break;
}

ChatServer.ClientThread t = new ChatServer.ClientThread(socket);
clients.add(t);
t.start();
send("login~" + t.username + "~" + t.username + " sedang login…~Server~\n");
}
try {
serverSocket.close();
for (int i = 0; i < clients.size(); ++i) {
ChatServer.ClientThread tc = clients.get(i);
try {

tc.sInput.close();
tc.sOutput.close();
tc.socket.close();
} catch (IOException ioE) {
}
}
} catch (Exception e) {
System.out.println("Exception closing the server and clients: " + e);
}
} catch (IOException e) {
String msg = "Exception on new ServerSocket: " + e + "\n";
System.out.println(msg);
}
}


private synchronized void send(String message) {
for (int i = clients.size(); i >= 0;) {
ChatServer.ClientThread ct = clients.get(i);
if (!ct.writeMsg(message)) {
clients.remove(i);
System.out.println("Disconnected Client " + ct.username + " removed from list.");
}
}
}



private String getClients() {
String s = "";
for (ClientThread clientThread : clients) {
s += clientThread.username + ":";
}
s += "—";
System.out.println(s);
return s;
}


private synchronized void remove(int id) {
for (int i = 0; i < clients.size(); ++i) {
ChatServer.ClientThread ct = clients.get(i);
if (ct.id == id) {
clients.remove(i);
return;

}
}
}

public static void main(String[] args) {
ChatServer server = new ChatServer();
server.start();
}


private class ClientThread extends Thread {
private Socket socket;
private ObjectInputStream sInput;
private ObjectOutputStream sOutput;
private int id;
private String username;


public ClientThread(Socket socket) {
id = ++uniqueId;
this.socket = socket;
System.out.println("Menciptakan Object Input/Output Streams");

try {
sOutput = new ObjectOutputStream(socket.getOutputStream());
sInput = new ObjectInputStream(socket.getInputStream());
String message = (String) sInput.readObject();

username = message.split("~")[1];
System.out.println(username + " masuk.");
} catch (IOException e) {
System.out.println("Exception creating new Input/output Streams: " + e);
} catch (ClassNotFoundException e) {
}
}



@Override
public void run() {
boolean keepGoing = true;
while (keepGoing) {



String message;
try {
message = sInput.readObject().toString();
} catch (IOException e) {
System.out.println(username + " Exception reading Streams: " + e);
break;
} catch (ClassNotFoundException e2) {
break;
}



String type = message.split("~")[0];
String pengirim = message.split("~")[1];
String text = message.split("~")[2];
String kepada = message.split("~")[3];
String response;
switch (type) {

case "postText":
response = "recieveText~" + pengirim + "~" + text + "~" + kepada + "~\n";
send(response);
break;

case "postPrivateText":
response = "recievePrivateText~" + pengirim + "~"+ text + "~" + kepada + "~\n";
send(response);
break;

case "login":
response = "login~" + pengirim + "~" + text + "~" + kepada + "~\n";
send(response);
break;

case "logout":
response = "logout~" + pengirim + "~" + text + "~" + kepada + "~\n";
send(response);
break;

case "list":
response = "list~server~" + getClients() + "~ ~ ~ ~ ~\n";
send(response);
break;
}
}
remove(id);
close();
}
private void close() {
try {
if (sOutput != null) {
sOutput.close();
}
} catch (Exception e) {
}
try {
if (sInput != null) {
sInput.close();
}
} catch (Exception e) {
}
try {
if (socket != null) {
socket.close();
}
} catch (Exception e) {
}
}
private boolean writeMsg(String msg) {
if (!socket.isConnected()) {
close();
return false;
}
try {
sOutput.writeObject(msg);
} catch (IOException e) {
System.out.println("Error sending message to " + username);
System.out.println(e.toString());
}
return true;
}
}
}


Syntax, ChatClient:
import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.net.Socket;

import java.util.ArrayList;

import java.util.List;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.ImageIcon;

import javax.swing.JLabel;

import javax.swing.table.DefaultTableModel;



public class ChatClient extends javax.swing.JFrame {



/**

* Creates new form ChatClient

*/

private ObjectInputStream input;

private ObjectOutputStream output;

private Socket socket;

private String server, username;

private int port;

private List<String> clients;



public ChatClient() {

clients = new ArrayList();

initComponents();



}



public boolean start() {

try {

socket = new Socket(server, port);

} catch (Exception ec) {

System.out.println("Error connectiong to server:" + ec);

return false;

}



String msg = "Connection accepted " + socket.getInetAddress() + ":" + socket.getPort();

System.out.println(msg);



try {

input = new ObjectInputStream(socket.getInputStream());

output = new ObjectOutputStream(socket.getOutputStream());

} catch (IOException eIO) {

System.out.println("Exception creating new Input/output Streams: " + eIO);

return false;

}



new ChatClient.ListenFromServer().start();



try {

output.writeObject("login~" + username + "~" + username + " sedang login…~server~\n");

output.writeObject("list~" + username + "~" + username + " sedang login…~server~\n");



} catch (IOException eIO) {

System.out.println("Exception doing login : " + eIO);

disconnect();

return false;

}



return true;

}



private void disconnect() {

try {

// TODO add your handling code here:

output.writeObject("logout~" + username + "~"+ username + " sudah logout…~Server~\n");

} catch (IOException ex) {

//Logger.getLogger(ChatClient.class.getName()).log(Level.SEVERE, null, ex);

}



try {

if (input != null) {

input.close();

}

} catch (Exception e) {

}

try {

if (output != null) {

output.close();

}

} catch (Exception e) {

}

try {

if (socket != null) {

socket.close();

}

} catch (Exception e) {

}

}



/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is always

* regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")


private void initComponents() {



jScrollPane1 = new javax.swing.JScrollPane();

viewTextArea = new javax.swing.JTextArea();

jScrollPane2 = new javax.swing.JScrollPane();

clientTable = new javax.swing.JTable();

postTextField = new javax.swing.JTextField();

kirimButton = new javax.swing.JButton();

lbljpg   = new javax.swing.JLabel(new ImageIcon("Documents:fb.jpg"));

jLabel2 = new javax.swing.JLabel();

serverTextField = new javax.swing.JTextField();

jLabel3 = new javax.swing.JLabel();

portTextField = new javax.swing.JTextField();

masukButton = new javax.swing.JButton();

jLabel4 = new javax.swing.JLabel();

usernameTextField = new javax.swing.JTextField();



setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);



viewTextArea.setEditable(false);

viewTextArea.setColumns(20);

viewTextArea.setLineWrap(true);

viewTextArea.setRows(5);

viewTextArea.setFocusable(false);

jScrollPane1.setViewportView(viewTextArea);



jScrollPane2.setViewportView(clientTable);



postTextField.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

postTextFieldActionPerformed(evt);

}

});



kirimButton.setText("Kirim");

kirimButton.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

kirimButtonActionPerformed(evt);

}

});



jLabel2.setText("Server");



serverTextField.setText("10.17.0.0");



jLabel3.setText("Port");



portTextField.setText("9999");



masukButton.setText("Masuk");

masukButton.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

masukButtonActionPerformed(evt);

}

});



jLabel4.setText("Username");



usernameTextField.setText("4 CF");



javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

.addComponent(postTextField)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(kirimButton))

.addComponent(jScrollPane1))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 259, javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(layout.createSequentialGroup()

.addComponent(lbljpg)

.addComponent(jLabel2)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(serverTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 167, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addComponent(jLabel3)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(portTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addComponent(jLabel4)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(usernameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 194, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(masukButton)))

.addContainerGap())

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

.addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(lbljpg)

.addComponent(jLabel2)

.addComponent(serverTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jLabel3)

.addComponent(portTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(masukButton)

.addComponent(jLabel4)

.addComponent(usernameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 427, Short.MAX_VALUE)

.addGroup(layout.createSequentialGroup()

.addComponent(jScrollPane1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(postTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(kirimButton))))

.addContainerGap())

);



pack();

}// </editor-fold>



private void masukButtonActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

this.server = serverTextField.getText();

this.port = new Integer(portTextField.getText());

this.username = usernameTextField.getText();

start();

}



private void kirimButtonActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

try {

String message = "postText~" + username + "~" + postTextField.getText() + "~all~\n";

output.writeObject(message);

postTextField.setText("");

} catch (IOException ex) {

Logger.getLogger(ChatClient.class.getName()).log(Level.SEVERE, null, ex);

}

}



private void postTextFieldActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

kirimButtonActionPerformed(evt);

}



/**

* @param args the command line arguments

*/

public static void main(String args[]) {

/* Set the Nimbus look and feel */

//<editor-fold defaultstate=”collapsed” desc=” Look and feel setting code (optional) “>

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

*/

try {

for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break;

}

}

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(ChatClient.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(ChatClient.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(ChatClient.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(ChatClient.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

}

//</editor-fold>



/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() {

@Override

public void run() {



new ChatClient().setVisible(true);

}

});

}

// Variables declaration – do not modify

private javax.swing.JTable clientTable;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JScrollPane jScrollPane2;

private javax.swing.JButton kirimButton;

private javax.swing.JButton masukButton;

private javax.swing.JTextField portTextField;

private javax.swing.JTextField postTextField;

private javax.swing.JTextField serverTextField;

private javax.swing.JTextField usernameTextField;

private javax.swing.JTextArea viewTextArea;

private JLabel lbljpg ;

// End of variables declaration



class ListenFromServer extends Thread {



@Override

public void run() {

while (true) {

try {

String msg = (String) input.readObject();

String res;

String type = msg.split("~")[0];

String pengirim = msg.split("~")[1];

String text = msg.split("~")[2];

String kepada = msg.split("~")[3];

switch (type) {

case "recieveText":

res = pengirim + ": " + text;

viewTextArea.setText(viewTextArea.getText() + res + "\n");

break;

case "recievePrivateText":

res = pengirim + ": "+ text;

if (kepada.equals(username)) {

viewTextArea.setText(viewTextArea.getText() + res + "\n");

}

break;

case "login":

viewTextArea.setText(viewTextArea.getText() + pengirim + " sudah login…" + "\n");

clients.add(pengirim);

break;

case "logout":

viewTextArea.setText(viewTextArea.getText() + pengirim + " telah logout…" + "\n");

clients.remove(pengirim);

break;

case "list":

setTable(text);

break;

}

} catch (IOException e) {

System.out.println("Server has close the connection: " + e);

break;

} catch (ClassNotFoundException e2) {

}

}

}



private void setTable(String text) {

int rows = text.split(":").length  -1;

Object[][] data = new Object[rows][1];

for (int i = 0; i < rows; i++) {

String t = text.split(":")[i];

data[i][0] = t;

}

String[] header = {"Clients"};
clientTable.setModel(new DefaultTableModel(data, header));
}
}
}


Ouput:
Share:

Kamis, 04 Mei 2017

Membuat Browser Sederhana dengan Java

Pertama, Siapkan aplikasi untuk menuliskan perintah coding.

Jika menggunakan Sistem Operasi Windows, anda bisa menggunakan Textpad / Notepad kemudian akan di Compile/ Execute dengan Java.




Jika menggunakan Linux, anda bisa menggunakan Geany / Notepadqq kemuadian akan di Compile /Execute dengan Java.




Lalu Tulis Perintah Coding seperti ini





Maka nanti akan muncul hasil output seperti ini 

Pada Windows



Untuk memunculkan hasil output pada linux, gunakan perintah seperti ini




Share:

Menu Internet java

Pertama, Siapkan aplikasi untuk menuliskan perintah coding.

Jika menggunakan Sistem Operasi Windows, anda bisa menggunakan Textpad / Notepad kemudian akan di Compile/ Execute dengan Java.




Jika menggunakan Linux, anda bisa menggunakan Geany / Notepadqq kemuadian akan di Compile /Execute dengan Java.




Lalu Tulis Perintah Coding seperti ini




Maka nanti akan muncul hasil output seperti ini 

Pada Windows


Untuk memunculkan hasil output pada linux, gunakan perintah seperti ini



Share:

Info Server

Pertama, Siapkan aplikasi untuk menuliskan perintah coding.

Jika menggunakan Sistem Operasi Windows, anda bisa menggunakan Textpad / Notepad kemudian akan di Compile/ Execute dengan Java.




Jika menggunakan Linux, anda bisa menggunakan Geany / Notepadqq kemuadian akan di Compile /Execute dengan Java.




Lalu Tulis Perintah Coding seperti ini





Maka nanti akan muncul hasil output seperti ini 

Pada Windows



Untuk memunculkan hasil output pada linux, gunakan perintah seperti ini



Share:

Info CLient

Pertama, Siapkan aplikasi untuk menuliskan perintah coding.

Jika menggunakan Sistem Operasi Windows, anda bisa menggunakan Textpad / Notepad kemudian akan di Compile/ Execute dengan Java.




Jika menggunakan Linux, anda bisa menggunakan Geany / Notepadqq kemuadian akan di Compile /Execute dengan Java.




Lalu Tulis Perintah Coding seperti ini





Untuk memunculkan hasil output pada linux, gunakan perintah seperti ini




Share:

DisplayNet

Pertama, Siapkan aplikasi untuk menuliskan perintah coding.

Jika menggunakan Sistem Operasi Windows, anda bisa menggunakan Textpad / Notepad kemudian akan di Compile/ Execute dengan Java.




Jika menggunakan Linux, anda bisa menggunakan Geany / Notepadqq kemuadian akan di Compile /Execute dengan Java.




Lalu Tulis Perintah Coding seperti ini



Maka nanti akan muncul hasil output seperti ini 

Pada Windows



Untuk memunculkan hasil output pada linux, gunakan perintah seperti ini



Share:

Membuat Kalimat Hello World

Pertama, Siapkan aplikasi untuk menuliskan perintah coding.

Jika menggunakan Sistem Operasi Windows, anda bisa menggunakan Textpad / Notepad kemudian akan di Compile/ Execute dengan Java.




Jika menggunakan Linux, anda bisa menggunakan Geany / Notepadqq kemuadian akan di Compile /Execute dengan Java.




Lalu Tulis Perintah Coding seperti ini



Maka nanti akan muncul hasil output seperti ini 

Pada Windows


Untuk memunculkan hasil output pada linux, gunakan perintah seperti ini




Share: