SlideShare a Scribd company logo
Source Code Client
/*
* To change this license header, choose License Headers in Project
Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package tcp;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
*
* @author SHUBHAM
*/
public class Client {
public static void main(String args[]) throws Exception
{
Socket sk=new Socket("127.0.0.1",5000);
BufferedReader sin=new BufferedReader(new
InputStreamReader(sk.getInputStream()));
PrintStream sout=new PrintStream(sk.getOutputStream());
BufferedReader stdin=new BufferedReader(new
InputStreamReader(System.in));
String s;
while ( true )
{
System.out.print("Client : ");
s=stdin.readLine();
sout.println(s);
if ( s.equalsIgnoreCase("BYE") )
{
System.out.println("Connection ended by client");
break;
}
s=sin.readLine();
System.out.print("Server : "+s+"n");
}
sk.close();
sin.close();
sout.close();
stdin.close();
}
}
Source Code Server
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package syarifchatting;
import java.awt.Color;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.text.Normalizer.Form;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JColorChooser;
import javax.swing.JOptionPane;
/**
* @author MhdSyarif
* Monday, 13 January 2014, 20 : 52 : 20 WIB
* Tugas III Matakulia Java2SE
* Mhd. Syarif | 49013075
* TKJMD - STEI - ITB
*/
public class Server extends javax.swing.JFrame implements Runnable{
int port=8080;
Socket client;
ServerSocket server;
BufferedReader Server_Reader, Client_Reader;
BufferedWriter Server_Writer, Client_Writer;
/**
* Creates new form Server
*/
//ServerSocket server=null;
// Socket client=null;
ExecutorService pool = null;
int clientcount=0;
// public static void main(String[] args) throws IOException {
// Server serverobj=new Server(5000);
// serverobj.startServer();
// }
Server(int port){
this.port=port;
pool = Executors.newFixedThreadPool(5);
}
public void Client() throws IOException
{
Socket sk=new Socket("127.0.0.1",5000);
BufferedReader sin=new BufferedReader(new
InputStreamReader(sk.getInputStream()));
PrintStream sout=new PrintStream(sk.getOutputStream());
BufferedReader stdin=new BufferedReader(new
InputStreamReader(System.in));
String s;
while ( true )
{
System.out.print("Client : ");
s=stdin.readLine();
sout.println(s);
if ( s.equalsIgnoreCase("BYE") )
{
System.out.println("Connection ended by client");
break;
}
s=sin.readLine();
System.out.print("Server : "+s+"n");
}
sk.close();
sin.close();
sout.close();
stdin.close();
}
public void startServer() throws IOException {
server=new ServerSocket(5000);
System.out.println("Server Booted");
System.out.println("Any client can stop the server by sending -1");
while(true)
{
client=server.accept();
clientcount++;
ServerThread runnable= new ServerThread(client,clientcount,this);
pool.execute(runnable);
}
}
private static class ServerThread implements Runnable {
Server server=null;
Socket client=null;
BufferedReader cin;
PrintStream cout;
Scanner sc=new Scanner(System.in);
int id;
String s;
ServerThread(Socket client, int count ,Server server ) throws
IOException {
this.client=client;
this.server=server;
this.id=count;
System.out.println("Connection "+id+"established with client
"+client);
cin=new BufferedReader(new
InputStreamReader(client.getInputStream()));
cout=new PrintStream(client.getOutputStream());
}
@Override
public void run() {
int x=1;
try{
while(true){
s=cin.readLine();
System. out.print("Client("+id+") :"+s+"n");
System.out.print("Server : ");
//s=stdin.readLine();
s=sc.nextLine();
if (s.equalsIgnoreCase("bye"))
{
cout.println("BYE");
x=0;
System.out.println("Connection ended by server");
break;
}
cout.println(s);
}
cin.close();
client.close();
cout.close();
if(x==0) {
System.out.println( "Server cleaning up." );
System.exit(0);
}
}
catch(IOException ex){
System.out.println("Error : "+ex);
}
}
}
public Server() {
super("www.mhdsyarif.com"); //SetTitle
initComponents();
//Menampilkan hasil ditengah window
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
java.awt.Dimension dialogSize = getSize();
setLocation((screenSize.width-dialogSize.width)/2,(screenSize.height-
dialogSize.height)/2);
}
//Pilihan ComboBox
private void getComboBox(){
if(ComboBox.getSelectedItem().equals("Server")){
ButtonOn.setText("On");
Username.setText("Server");
}else{
ButtonOn.setText("Connect");
Username.setText("Client");
}
}
//Koneksi client ke server
private void getClientConnec(){
try {
String ip = JOptionPane.showInputDialog(" Input IP Address");
client = new Socket(ip, port);
ComboBox.setEnabled(false);
ButtonOn.setText("Disconnect");
Server_Reader = new BufferedReader(new
InputStreamReader(client.getInputStream()));
Server_Writer = new BufferedWriter (new
OutputStreamWriter(client.getOutputStream()));
} catch (UnknownHostException ex) {
System.out.println("Accept Failed");
System.exit(-1);
} catch (IOException ex) {
Logger.getLogger(Form.class.getName()).log(Level.SEVERE, null,
ex);
}
}
private void getReadConnec(){
try {
try {
try {
server = new ServerSocket(port);
this.setTitle("Please Wait");
} catch (IOException ex) {
System.out.println("Could not listen");
System.exit(-1);
}
client = server.accept();
this.setTitle("Connected" + client.getInetAddress());
} catch (IOException ex) {
System.out.println("Accept Failed");
System.exit(-1);
}
Server_Reader = new BufferedReader(new
InputStreamReader(client.getInputStream()));
Server_Writer = new BufferedWriter(new
OutputStreamWriter(client.getOutputStream()));
} catch (IOException ex) {
System.out.println("Read Failed");
System.exit(-1);
}
}
private void getDisconnectedClient(){
try {
client.close();
Server_Reader.close();
Server_Writer.close();
ComboBox.setEnabled(true);
ButtonOn.setText("Connect");
} catch (IOException ex) {
Logger.getLogger(Form.class.getName()).log(Level.SEVERE, null,
ex);
}
}
private void getDisconnectedServer(){
try {
Server_Reader.close();
Server_Writer.close();
ButtonOn.setText("On");
this.setTitle("Disconected");
} catch (IOException ex) {
Logger.getLogger(Form.class.getName()).log(Level.SEVERE, null,
ex);
}
}
private void getButtonOn(){
if(ButtonOn.getText().equals("Connect"))
{
ButtonOn.setText("DIsconnect");
getClientConnec();
Thread thread1= new Thread(this);
Thread thread2= new Thread(this);
Thread thread3= new Thread(this);
Thread thread4= new Thread(this);
Thread thread5= new Thread(this);
Thread thread6= new Thread(this);
Thread thread7= new Thread(this);
Thread thread8= new Thread(this);
Thread thread9= new Thread(this);
Thread thread10= new Thread(this);
thread1.start();
thread2.start();
thread3.start();
thread4.start();
thread5.start();
thread6.start();
thread7.start();
thread8.start();
thread9.start();
thread10.start();
} else if(ComboBox.getSelectedItem().equals("Server")){
ButtonOn.setText("Off");
getReadConnec();
Thread thread1= new Thread(this);
Thread thread2= new Thread(this);
Thread thread3= new Thread(this);
Thread thread4= new Thread(this);
Thread thread5= new Thread(this);
Thread thread6= new Thread(this);
Thread thread7= new Thread(this);
Thread thread8= new Thread(this);
Thread thread9= new Thread(this);
Thread thread10= new Thread(this);
thread1.start();
thread2.start();
thread3.start();
thread4.start();
thread5.start();
thread6.start();
thread7.start();
thread8.start();
thread9.start();
thread10.start();
}else if(ButtonOn.getText().equals("Disconnect")){
getDisconnectedClient();
}else if(ButtonOn.getText().equals("Off")){
getDisconnectedServer();
}
}
private void getSend(){
try {
Server_Writer.write(Username.getText()+ ": "
+TextChat.getText());
Server_Writer.newLine();
Server_Writer.flush();
} catch (IOException ex) {
Logger.getLogger(Form.class.getName()).log(Level.SEVERE, null,
ex);
}
ListChat.add(Username.getText()+ ": " +TextChat.getText());
//jClient.setText(Username.getText());
TextChat.setText("");
}
//Background color
public void getBackgroundColor(){
Color c = JColorChooser.showDialog(null,"Background
Color",jPanel.getBackground());
jPanel.setBackground(c);
}
//Konfirmasi keluar
public void getExit(){
int confirm =JOptionPane.showConfirmDialog(this,"Are you sure will
exit this application ?","Exit
Application",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
if (confirm == JOptionPane.YES_OPTION){
System.exit(0);
}
}
/**
* 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")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
Dialog = new javax.swing.JDialog();
ColorChooser = new javax.swing.JColorChooser();
jPanel = new javax.swing.JPanel();
ComboBox = new javax.swing.JComboBox();
ButtonOn = new javax.swing.JButton();
Send = new javax.swing.JToggleButton();
JUsername = new javax.swing.JLabel();
Username = new javax.swing.JTextField();
TextChat = new java.awt.TextArea();
ListChat = new java.awt.List();
jMenuBar1 = new javax.swing.JMenuBar();
File = new javax.swing.JMenu();
BackgroundColor = new javax.swing.JMenuItem();
Exit = new javax.swing.JMenuItem();
Help = new javax.swing.JMenu();
About = new javax.swing.JMenuItem();
javax.swing.GroupLayout DialogLayout = new
javax.swing.GroupLayout(Dialog.getContentPane());
Dialog.getContentPane().setLayout(DialogLayout);
DialogLayout.setHorizontalGroup(
DialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(DialogLayout.createSequentialGroup()
.addContainerGap()
.addComponent(ColorChooser,
javax.swing.GroupLayout.PREFERRED_SIZE, 601,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
DialogLayout.setVerticalGroup(
DialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(DialogLayout.createSequentialGroup()
.addContainerGap()
.addComponent(ColorChooser,
javax.swing.GroupLayout.PREFERRED_SIZE, 316,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setBackground(new java.awt.Color(204, 204, 204));
setResizable(false);
jPanel.setBackground(new java.awt.Color(204, 204, 204));
ComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] {
"Server", "Client" }));
ComboBox.setToolTipText("");
ComboBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ComboBoxActionPerformed(evt);
}
});
ButtonOn.setText("On");
ButtonOn.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ButtonOnActionPerformed(evt);
}
});
Send.setText("SEND");
Send.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
SendActionPerformed(evt);
}
});
JUsername.setText("Username");
Username.setText("Server");
javax.swing.GroupLayout jPanelLayout = new
javax.swing.GroupLayout(jPanel);
jPanel.setLayout(jPanelLayout);
jPanelLayout.setHorizontalGroup(
jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING)
.addGroup(jPanelLayout.createSequentialGroup()
.addGroup(jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING, false)
.addGroup(jPanelLayout.createSequentialGroup()
.addComponent(JUsername)
.addGap(18, 18, 18)
.addComponent(Username,
javax.swing.GroupLayout.PREFERRED_SIZE, 237,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(ComboBox, 0,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(18, 18, 18)
.addComponent(ButtonOn,
javax.swing.GroupLayout.DEFAULT_SIZE, 99, Short.MAX_VALUE))
.addComponent(ListChat,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addGroup(jPanelLayout.createSequentialGroup()
.addComponent(TextChat,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Send,
javax.swing.GroupLayout.PREFERRED_SIZE, 74,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jPanelLayout.setVerticalGroup(
jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanelLayout.createSequentialGroup()
.addGap(18, 18, 18)
.addGroup(jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.
BASELINE)
.addComponent(ComboBox,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ButtonOn))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.
BASELINE)
.addComponent(JUsername)
.addComponent(Username,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ListChat,
javax.swing.GroupLayout.PREFERRED_SIZE, 179,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING, false)
.addComponent(TextChat,
javax.swing.GroupLayout.PREFERRED_SIZE, 58,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(Send, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
File.setText("File");
BackgroundColor.setText("Background Color");
BackgroundColor.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt) {
BackgroundColorActionPerformed(evt);
}
});
File.add(BackgroundColor);
Exit.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEven
t.VK_W, java.awt.event.InputEvent.CTRL_MASK));
Exit.setText("Exit");
Exit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ExitActionPerformed(evt);
}
});
File.add(Exit);
jMenuBar1.add(File);
Help.setText("Help");
About.setText("About");
About.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
AboutActionPerformed(evt);
}
});
Help.add(About);
jMenuBar1.add(Help);
setJMenuBar(jMenuBar1);
javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel, javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
);
pack();
}// </editor-fold>
private void AboutActionPerformed(java.awt.event.ActionEvent evt) {
About a = new About();
a.setVisible(true);// TODO add your handling code here:
}
private void SendActionPerformed(java.awt.event.ActionEvent evt) {
getSend();// TODO add your handling code here:
}
private void ButtonOnActionPerformed(java.awt.event.ActionEvent evt) {
getButtonOn();
// TODO add your handling code here:
}
private void ComboBoxActionPerformed(java.awt.event.ActionEvent evt) {
getComboBox();
}
private void ExitActionPerformed(java.awt.event.ActionEvent evt) {
getExit();// TODO add your handling code here:
}
private void BackgroundColorActionPerformed(java.awt.event.ActionEvent
evt) {
getBackgroundColor();// TODO add your handling code here:
}
/**
* @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(Server.class.getName()).log(java.util.logg
ing.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Server.class.getName()).log(java.util.logg
ing.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Server.class.getName()).log(java.util.logg
ing.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Server.class.getName()).log(java.util.logg
ing.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Server().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JMenuItem About;
private javax.swing.JMenuItem BackgroundColor;
private javax.swing.JButton ButtonOn;
private javax.swing.JColorChooser ColorChooser;
private javax.swing.JComboBox ComboBox;
private javax.swing.JDialog Dialog;
private javax.swing.JMenuItem Exit;
private javax.swing.JMenu File;
private javax.swing.JMenu Help;
private javax.swing.JLabel JUsername;
private java.awt.List ListChat;
private javax.swing.JToggleButton Send;
private java.awt.TextArea TextChat;
private javax.swing.JTextField Username;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JPanel jPanel;
// End of variables declaration
@Override
public void run()
{
try {
ListChat.add(Server_Reader.readLine());
} catch (IOException ex) {
Logger.getLogger(Form.class.getName()).log(Level.SEVERE, null,
ex);
}
}
}
Hasil
Pembahasan :
Server bisa mengirim dan menerima chat. Tetapi hanya dapat dilakukan satu server dan satu
client. Jika client ke 2 ingin konek ke dalam chat, chat client ke 2 tidak dapat terlihat.

More Related Content

PDF
Tugas 2
DOCX
201913046 wahyu septiansyah network programing
PDF
Spock framework
PDF
Spock: A Highly Logical Way To Test
PPTX
Hack ASP.NET website
DOCX
Custom faultpolicies
PPTX
QA Fest 2019. Saar Rachamim. Developing Tools, While Testing
PDF
Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...
Tugas 2
201913046 wahyu septiansyah network programing
Spock framework
Spock: A Highly Logical Way To Test
Hack ASP.NET website
Custom faultpolicies
QA Fest 2019. Saar Rachamim. Developing Tools, While Testing
Java 7 Launch Event at LyonJUG, Lyon France. Fork / Join framework and Projec...

What's hot (18)

PDF
Java 7 LavaJUG
PDF
BDD - Behavior Driven Development Webapps mit Groovy Spock und Geb
PPTX
Building Your First Data Science Applicatino in MongoDB
PPTX
Smarter Testing With Spock
PDF
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
PDF
Csw2016 gawlik bypassing_differentdefenseschemes
PDF
JJUG CCC 2011 Spring
RTF
Easy Button
PPTX
Jersey framework
DOCX
Winform
PDF
The Ring programming language version 1.8 book - Part 54 of 202
PPTX
Owasp Indy Q2 2012 Advanced SQLi
PDF
Maximizing SQL Reviews and Tuning with pt-query-digest
PDF
Internet Technology (Practical Questions Paper) [CBSGS - 75:25 Pattern] {Mast...
PPT
Simple API for XML
PPTX
Project in programming
PPTX
Down to Stack Traces, up from Heap Dumps
PDF
Construire une application JavaFX 8 avec gradle
Java 7 LavaJUG
BDD - Behavior Driven Development Webapps mit Groovy Spock und Geb
Building Your First Data Science Applicatino in MongoDB
Smarter Testing With Spock
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Csw2016 gawlik bypassing_differentdefenseschemes
JJUG CCC 2011 Spring
Easy Button
Jersey framework
Winform
The Ring programming language version 1.8 book - Part 54 of 202
Owasp Indy Q2 2012 Advanced SQLi
Maximizing SQL Reviews and Tuning with pt-query-digest
Internet Technology (Practical Questions Paper) [CBSGS - 75:25 Pattern] {Mast...
Simple API for XML
Project in programming
Down to Stack Traces, up from Heap Dumps
Construire une application JavaFX 8 avec gradle
Ad

Similar to 201913001 khairunnisa progres_harian (20)

PPT
Socket Programming
PDF
Server1
PDF
Hi, I need some one to help me with Design a client-server Chat so.pdf
PDF
Multi client
PDF
MultiClient chatting berbasis gambar
DOCX
Multi client
PDF
Laporan multiclient chatting client server
DOCX
Laporan multi client
DOCX
Laporan tugas network programming
PDF
Laporan multiclient chatting berbasis grafis (gambar)
PPTX
#3 (Multi Threads With TCP)
PPT
Sockets
PPT
Chapter 4 slides
PPTX
分散式系統
PDF
Advanced Java Practical File
PPT
Socket programming
PPT
Csphtp1 22
PPT
Multi user chat system using java
DOCX
Please look at the attach See.doc. I am getting this error all th.docx
PPT
Networking & Socket Programming In Java
Socket Programming
Server1
Hi, I need some one to help me with Design a client-server Chat so.pdf
Multi client
MultiClient chatting berbasis gambar
Multi client
Laporan multiclient chatting client server
Laporan multi client
Laporan tugas network programming
Laporan multiclient chatting berbasis grafis (gambar)
#3 (Multi Threads With TCP)
Sockets
Chapter 4 slides
分散式系統
Advanced Java Practical File
Socket programming
Csphtp1 22
Multi user chat system using java
Please look at the attach See.doc. I am getting this error all th.docx
Networking & Socket Programming In Java
Ad

Recently uploaded (20)

PDF
medical_surgical_nursing_10th_edition_ignatavicius_TEST_BANK_pdf.pdf
PDF
FORM 1 BIOLOGY MIND MAPS and their schemes
PDF
1.3 FINAL REVISED K-10 PE and Health CG 2023 Grades 4-10 (1).pdf
PDF
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
PDF
Τίμαιος είναι φιλοσοφικός διάλογος του Πλάτωνα
PPTX
202450812 BayCHI UCSC-SV 20250812 v17.pptx
PDF
HVAC Specification 2024 according to central public works department
PDF
Vision Prelims GS PYQ Analysis 2011-2022 www.upscpdf.com.pdf
PPTX
Computer Architecture Input Output Memory.pptx
PPTX
Introduction to Building Materials
PDF
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
PDF
RTP_AR_KS1_Tutor's Guide_English [FOR REPRODUCTION].pdf
PPTX
TNA_Presentation-1-Final(SAVE)) (1).pptx
PDF
احياء السادس العلمي - الفصل الثالث (التكاثر) منهج متميزين/كلية بغداد/موهوبين
PDF
Weekly quiz Compilation Jan -July 25.pdf
PDF
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
PDF
FOISHS ANNUAL IMPLEMENTATION PLAN 2025.pdf
PDF
David L Page_DCI Research Study Journey_how Methodology can inform one's prac...
PPTX
20th Century Theater, Methods, History.pptx
PPTX
Virtual and Augmented Reality in Current Scenario
medical_surgical_nursing_10th_edition_ignatavicius_TEST_BANK_pdf.pdf
FORM 1 BIOLOGY MIND MAPS and their schemes
1.3 FINAL REVISED K-10 PE and Health CG 2023 Grades 4-10 (1).pdf
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
Τίμαιος είναι φιλοσοφικός διάλογος του Πλάτωνα
202450812 BayCHI UCSC-SV 20250812 v17.pptx
HVAC Specification 2024 according to central public works department
Vision Prelims GS PYQ Analysis 2011-2022 www.upscpdf.com.pdf
Computer Architecture Input Output Memory.pptx
Introduction to Building Materials
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
RTP_AR_KS1_Tutor's Guide_English [FOR REPRODUCTION].pdf
TNA_Presentation-1-Final(SAVE)) (1).pptx
احياء السادس العلمي - الفصل الثالث (التكاثر) منهج متميزين/كلية بغداد/موهوبين
Weekly quiz Compilation Jan -July 25.pdf
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
FOISHS ANNUAL IMPLEMENTATION PLAN 2025.pdf
David L Page_DCI Research Study Journey_how Methodology can inform one's prac...
20th Century Theater, Methods, History.pptx
Virtual and Augmented Reality in Current Scenario

201913001 khairunnisa progres_harian

  • 1. Source Code Client /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package tcp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; /** * * @author SHUBHAM */ public class Client { public static void main(String args[]) throws Exception { Socket sk=new Socket("127.0.0.1",5000); BufferedReader sin=new BufferedReader(new InputStreamReader(sk.getInputStream())); PrintStream sout=new PrintStream(sk.getOutputStream()); BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in)); String s; while ( true ) {
  • 2. System.out.print("Client : "); s=stdin.readLine(); sout.println(s); if ( s.equalsIgnoreCase("BYE") ) { System.out.println("Connection ended by client"); break; } s=sin.readLine(); System.out.print("Server : "+s+"n"); } sk.close(); sin.close(); sout.close(); stdin.close(); } } Source Code Server /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package syarifchatting; import java.awt.Color; import java.io.BufferedReader; import java.io.BufferedWriter;
  • 3. import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; import java.net.UnknownHostException; import java.text.Normalizer.Form; import java.util.Scanner; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JColorChooser; import javax.swing.JOptionPane; /** * @author MhdSyarif * Monday, 13 January 2014, 20 : 52 : 20 WIB * Tugas III Matakulia Java2SE * Mhd. Syarif | 49013075 * TKJMD - STEI - ITB */ public class Server extends javax.swing.JFrame implements Runnable{ int port=8080; Socket client; ServerSocket server; BufferedReader Server_Reader, Client_Reader; BufferedWriter Server_Writer, Client_Writer;
  • 4. /** * Creates new form Server */ //ServerSocket server=null; // Socket client=null; ExecutorService pool = null; int clientcount=0; // public static void main(String[] args) throws IOException { // Server serverobj=new Server(5000); // serverobj.startServer(); // } Server(int port){ this.port=port; pool = Executors.newFixedThreadPool(5); } public void Client() throws IOException { Socket sk=new Socket("127.0.0.1",5000); BufferedReader sin=new BufferedReader(new InputStreamReader(sk.getInputStream())); PrintStream sout=new PrintStream(sk.getOutputStream()); BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in)); String s; while ( true ) { System.out.print("Client : ");
  • 5. s=stdin.readLine(); sout.println(s); if ( s.equalsIgnoreCase("BYE") ) { System.out.println("Connection ended by client"); break; } s=sin.readLine(); System.out.print("Server : "+s+"n"); } sk.close(); sin.close(); sout.close(); stdin.close(); } public void startServer() throws IOException { server=new ServerSocket(5000); System.out.println("Server Booted"); System.out.println("Any client can stop the server by sending -1"); while(true) { client=server.accept(); clientcount++; ServerThread runnable= new ServerThread(client,clientcount,this); pool.execute(runnable); }
  • 6. } private static class ServerThread implements Runnable { Server server=null; Socket client=null; BufferedReader cin; PrintStream cout; Scanner sc=new Scanner(System.in); int id; String s; ServerThread(Socket client, int count ,Server server ) throws IOException { this.client=client; this.server=server; this.id=count; System.out.println("Connection "+id+"established with client "+client); cin=new BufferedReader(new InputStreamReader(client.getInputStream())); cout=new PrintStream(client.getOutputStream()); } @Override public void run() { int x=1; try{ while(true){
  • 7. s=cin.readLine(); System. out.print("Client("+id+") :"+s+"n"); System.out.print("Server : "); //s=stdin.readLine(); s=sc.nextLine(); if (s.equalsIgnoreCase("bye")) { cout.println("BYE"); x=0; System.out.println("Connection ended by server"); break; } cout.println(s); } cin.close(); client.close(); cout.close(); if(x==0) { System.out.println( "Server cleaning up." ); System.exit(0); } } catch(IOException ex){ System.out.println("Error : "+ex); } }
  • 8. } public Server() { super("www.mhdsyarif.com"); //SetTitle initComponents(); //Menampilkan hasil ditengah window java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); java.awt.Dimension dialogSize = getSize(); setLocation((screenSize.width-dialogSize.width)/2,(screenSize.height- dialogSize.height)/2); } //Pilihan ComboBox private void getComboBox(){ if(ComboBox.getSelectedItem().equals("Server")){ ButtonOn.setText("On"); Username.setText("Server"); }else{ ButtonOn.setText("Connect"); Username.setText("Client"); } } //Koneksi client ke server private void getClientConnec(){ try { String ip = JOptionPane.showInputDialog(" Input IP Address"); client = new Socket(ip, port); ComboBox.setEnabled(false); ButtonOn.setText("Disconnect");
  • 9. Server_Reader = new BufferedReader(new InputStreamReader(client.getInputStream())); Server_Writer = new BufferedWriter (new OutputStreamWriter(client.getOutputStream())); } catch (UnknownHostException ex) { System.out.println("Accept Failed"); System.exit(-1); } catch (IOException ex) { Logger.getLogger(Form.class.getName()).log(Level.SEVERE, null, ex); } } private void getReadConnec(){ try { try { try { server = new ServerSocket(port); this.setTitle("Please Wait"); } catch (IOException ex) { System.out.println("Could not listen"); System.exit(-1); } client = server.accept(); this.setTitle("Connected" + client.getInetAddress()); } catch (IOException ex) { System.out.println("Accept Failed"); System.exit(-1); } Server_Reader = new BufferedReader(new InputStreamReader(client.getInputStream())); Server_Writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
  • 10. } catch (IOException ex) { System.out.println("Read Failed"); System.exit(-1); } } private void getDisconnectedClient(){ try { client.close(); Server_Reader.close(); Server_Writer.close(); ComboBox.setEnabled(true); ButtonOn.setText("Connect"); } catch (IOException ex) { Logger.getLogger(Form.class.getName()).log(Level.SEVERE, null, ex); } } private void getDisconnectedServer(){ try { Server_Reader.close(); Server_Writer.close(); ButtonOn.setText("On"); this.setTitle("Disconected"); } catch (IOException ex) { Logger.getLogger(Form.class.getName()).log(Level.SEVERE, null, ex); } }
  • 11. private void getButtonOn(){ if(ButtonOn.getText().equals("Connect")) { ButtonOn.setText("DIsconnect"); getClientConnec(); Thread thread1= new Thread(this); Thread thread2= new Thread(this); Thread thread3= new Thread(this); Thread thread4= new Thread(this); Thread thread5= new Thread(this); Thread thread6= new Thread(this); Thread thread7= new Thread(this); Thread thread8= new Thread(this); Thread thread9= new Thread(this); Thread thread10= new Thread(this); thread1.start(); thread2.start(); thread3.start(); thread4.start(); thread5.start(); thread6.start(); thread7.start(); thread8.start(); thread9.start(); thread10.start(); } else if(ComboBox.getSelectedItem().equals("Server")){ ButtonOn.setText("Off"); getReadConnec(); Thread thread1= new Thread(this); Thread thread2= new Thread(this);
  • 12. Thread thread3= new Thread(this); Thread thread4= new Thread(this); Thread thread5= new Thread(this); Thread thread6= new Thread(this); Thread thread7= new Thread(this); Thread thread8= new Thread(this); Thread thread9= new Thread(this); Thread thread10= new Thread(this); thread1.start(); thread2.start(); thread3.start(); thread4.start(); thread5.start(); thread6.start(); thread7.start(); thread8.start(); thread9.start(); thread10.start(); }else if(ButtonOn.getText().equals("Disconnect")){ getDisconnectedClient(); }else if(ButtonOn.getText().equals("Off")){ getDisconnectedServer(); } } private void getSend(){ try { Server_Writer.write(Username.getText()+ ": " +TextChat.getText()); Server_Writer.newLine(); Server_Writer.flush();
  • 13. } catch (IOException ex) { Logger.getLogger(Form.class.getName()).log(Level.SEVERE, null, ex); } ListChat.add(Username.getText()+ ": " +TextChat.getText()); //jClient.setText(Username.getText()); TextChat.setText(""); } //Background color public void getBackgroundColor(){ Color c = JColorChooser.showDialog(null,"Background Color",jPanel.getBackground()); jPanel.setBackground(c); } //Konfirmasi keluar public void getExit(){ int confirm =JOptionPane.showConfirmDialog(this,"Are you sure will exit this application ?","Exit Application",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if (confirm == JOptionPane.YES_OPTION){ System.exit(0); } } /** * 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")
  • 14. // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { Dialog = new javax.swing.JDialog(); ColorChooser = new javax.swing.JColorChooser(); jPanel = new javax.swing.JPanel(); ComboBox = new javax.swing.JComboBox(); ButtonOn = new javax.swing.JButton(); Send = new javax.swing.JToggleButton(); JUsername = new javax.swing.JLabel(); Username = new javax.swing.JTextField(); TextChat = new java.awt.TextArea(); ListChat = new java.awt.List(); jMenuBar1 = new javax.swing.JMenuBar(); File = new javax.swing.JMenu(); BackgroundColor = new javax.swing.JMenuItem(); Exit = new javax.swing.JMenuItem(); Help = new javax.swing.JMenu(); About = new javax.swing.JMenuItem(); javax.swing.GroupLayout DialogLayout = new javax.swing.GroupLayout(Dialog.getContentPane()); Dialog.getContentPane().setLayout(DialogLayout); DialogLayout.setHorizontalGroup( DialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(DialogLayout.createSequentialGroup() .addContainerGap() .addComponent(ColorChooser, javax.swing.GroupLayout.PREFERRED_SIZE, 601, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  • 15. ); DialogLayout.setVerticalGroup( DialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(DialogLayout.createSequentialGroup() .addContainerGap() .addComponent(ColorChooser, javax.swing.GroupLayout.PREFERRED_SIZE, 316, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setBackground(new java.awt.Color(204, 204, 204)); setResizable(false); jPanel.setBackground(new java.awt.Color(204, 204, 204)); ComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Server", "Client" })); ComboBox.setToolTipText(""); ComboBox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ComboBoxActionPerformed(evt); } }); ButtonOn.setText("On"); ButtonOn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ButtonOnActionPerformed(evt);
  • 16. } }); Send.setText("SEND"); Send.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { SendActionPerformed(evt); } }); JUsername.setText("Username"); Username.setText("Server"); javax.swing.GroupLayout jPanelLayout = new javax.swing.GroupLayout(jPanel); jPanel.setLayout(jPanelLayout); jPanelLayout.setHorizontalGroup( jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGroup(jPanelLayout.createSequentialGroup() .addGroup(jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING, false) .addGroup(jPanelLayout.createSequentialGroup() .addComponent(JUsername) .addGap(18, 18, 18)
  • 17. .addComponent(Username, javax.swing.GroupLayout.PREFERRED_SIZE, 237, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(ComboBox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(18, 18, 18) .addComponent(ButtonOn, javax.swing.GroupLayout.DEFAULT_SIZE, 99, Short.MAX_VALUE)) .addComponent(ListChat, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanelLayout.createSequentialGroup() .addComponent(TextChat, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(Send, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) ); jPanelLayout.setVerticalGroup( jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelLayout.createSequentialGroup() .addGap(18, 18, 18) .addGroup(jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment. BASELINE) .addComponent(ComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(ButtonOn)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment. BASELINE)
  • 18. .addComponent(JUsername) .addComponent(Username, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(ListChat, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING, false) .addComponent(TextChat, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(Send, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); File.setText("File"); BackgroundColor.setText("Background Color"); BackgroundColor.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { BackgroundColorActionPerformed(evt); } }); File.add(BackgroundColor); Exit.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEven t.VK_W, java.awt.event.InputEvent.CTRL_MASK));
  • 19. Exit.setText("Exit"); Exit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { ExitActionPerformed(evt); } }); File.add(Exit); jMenuBar1.add(File); Help.setText("Help"); About.setText("About"); About.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { AboutActionPerformed(evt); } }); Help.add(About); jMenuBar1.add(Help); setJMenuBar(jMenuBar1); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  • 20. ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); pack(); }// </editor-fold> private void AboutActionPerformed(java.awt.event.ActionEvent evt) { About a = new About(); a.setVisible(true);// TODO add your handling code here: } private void SendActionPerformed(java.awt.event.ActionEvent evt) { getSend();// TODO add your handling code here: } private void ButtonOnActionPerformed(java.awt.event.ActionEvent evt) { getButtonOn(); // TODO add your handling code here: } private void ComboBoxActionPerformed(java.awt.event.ActionEvent evt) { getComboBox(); } private void ExitActionPerformed(java.awt.event.ActionEvent evt) { getExit();// TODO add your handling code here:
  • 21. } private void BackgroundColorActionPerformed(java.awt.event.ActionEvent evt) { getBackgroundColor();// TODO add your handling code here: } /** * @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(Server.class.getName()).log(java.util.logg ing.Level.SEVERE, null, ex); } catch (InstantiationException ex) {
  • 22. java.util.logging.Logger.getLogger(Server.class.getName()).log(java.util.logg ing.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(Server.class.getName()).log(java.util.logg ing.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(Server.class.getName()).log(java.util.logg ing.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Server().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JMenuItem About; private javax.swing.JMenuItem BackgroundColor; private javax.swing.JButton ButtonOn; private javax.swing.JColorChooser ColorChooser; private javax.swing.JComboBox ComboBox; private javax.swing.JDialog Dialog; private javax.swing.JMenuItem Exit; private javax.swing.JMenu File; private javax.swing.JMenu Help; private javax.swing.JLabel JUsername; private java.awt.List ListChat;
  • 23. private javax.swing.JToggleButton Send; private java.awt.TextArea TextChat; private javax.swing.JTextField Username; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JPanel jPanel; // End of variables declaration @Override public void run() { try { ListChat.add(Server_Reader.readLine()); } catch (IOException ex) { Logger.getLogger(Form.class.getName()).log(Level.SEVERE, null, ex); } } }
  • 24. Hasil Pembahasan : Server bisa mengirim dan menerima chat. Tetapi hanya dapat dilakukan satu server dan satu client. Jika client ke 2 ingin konek ke dalam chat, chat client ke 2 tidak dapat terlihat.