public class ServerForm
extends javax.
swing.
JFrame {
public ServerForm() {
initComponents();
}
/**
* 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() {
Nasluchuj
= new javax.
swing.
JButton(); btn_send
= new javax.
swing.
JButton();
Nasluchuj.setText("Nasłuchuj");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) { NasluchujActionPerformed(evt);
}
});
btn_send.setText("wyslij");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) { btn_sendActionPerformed(evt);
}
});
txt_recMsg.setColumns(20);
txt_recMsg.setRows(5);
jScrollPane1.setViewportView(txt_recMsg);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.
addGap(0,
0,
Short.
MAX_VALUE) .addComponent(Nasluchuj))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.
addComponent(txt_msg, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
300,
Short.
MAX_VALUE) .addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 284, javax.swing.GroupLayout.PREFERRED_SIZE)
.
addGap(0,
0,
Short.
MAX_VALUE))) .addGap(18, 18, 18)
.addComponent(btn_send)))
.addGap(22, 22, 22))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(Nasluchuj)
.addGap(18, 18, 18)
.
addComponent(jScrollPane1, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
185,
Short.
MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btn_send)
.addComponent(txt_msg, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
pack();
}// </editor-fold>
private void NasluchujActionPerformed
(java.
awt.
event.
ActionEvent evt
) { try {
client = server.accept();
JOptionPane.
showMessageDialog(null,
"Połączenie udane: "); ReceiveMessage serverThread = new ReceiveMessage(dis,txt_recMsg);
serverThread.setDaemon(true);
serverThread.setName("Client");
serverThread.start();
JOptionPane.
showMessageDialog(null,
"Połączenie nieudane: "); }
}
private void btn_sendActionPerformed
(java.
awt.
event.
ActionEvent evt
) { try {
dos.writeUTF(m);
Logger.getLogger(ServerForm.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* @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://d...content-available-to-author-only...e.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
if ("Nimbus".equals(info.getName())) {
javax.
swing.
UIManager.
setLookAndFeel(info.
getClassName()); break;
}
}
java.util.logging.Logger.getLogger(ServerForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
java.util.logging.Logger.getLogger(ServerForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
java.util.logging.Logger.getLogger(ServerForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
java.util.logging.Logger.getLogger(ServerForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
public void run() {
new ServerForm().setVisible(true);
}
});
}
cHVibGljIGNsYXNzIFNlcnZlckZvcm0gZXh0ZW5kcyBqYXZheC5zd2luZy5KRnJhbWUgewoKICAgIFNlcnZlclNvY2tldCBzZXJ2ZXIgPW51bGw7CiAgICBTb2NrZXQgY2xpZW50ID1udWxsOwogICAgRGF0YU91dHB1dFN0cmVhbSBkb3MgPSBudWxsOwogICAgRGF0YUlucHV0U3RyZWFtIGRpcyA9IG51bGw7CiAgICAKICAgIHB1YmxpYyBTZXJ2ZXJGb3JtKCkgewogICAgICAgIGluaXRDb21wb25lbnRzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gdGhlIGNvbnN0cnVjdG9yIHRvIGluaXRpYWxpemUgdGhlIGZvcm0uCiAgICAgKiBXQVJOSU5HOiBEbyBOT1QgbW9kaWZ5IHRoaXMgY29kZS4gVGhlIGNvbnRlbnQgb2YgdGhpcyBtZXRob2QgaXMgYWx3YXlzCiAgICAgKiByZWdlbmVyYXRlZCBieSB0aGUgRm9ybSBFZGl0b3IuCiAgICAgKi8KICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQogICAgLy8gPGVkaXRvci1mb2xkIGRlZmF1bHRzdGF0ZT0iY29sbGFwc2VkIiBkZXNjPSJHZW5lcmF0ZWQgQ29kZSI+ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIHByaXZhdGUgdm9pZCBpbml0Q29tcG9uZW50cygpIHsKCiAgICAgICAgTmFzbHVjaHVqID0gbmV3IGphdmF4LnN3aW5nLkpCdXR0b24oKTsKICAgICAgICBidG5fc2VuZCA9IG5ldyBqYXZheC5zd2luZy5KQnV0dG9uKCk7CiAgICAgICAgdHh0X21zZyA9IG5ldyBqYXZheC5zd2luZy5KVGV4dEZpZWxkKCk7CiAgICAgICAgalNjcm9sbFBhbmUxID0gbmV3IGphdmF4LnN3aW5nLkpTY3JvbGxQYW5lKCk7CiAgICAgICAgdHh0X3JlY01zZyA9IG5ldyBqYXZheC5zd2luZy5KVGV4dEFyZWEoKTsKCiAgICAgICAgc2V0RGVmYXVsdENsb3NlT3BlcmF0aW9uKGphdmF4LnN3aW5nLldpbmRvd0NvbnN0YW50cy5FWElUX09OX0NMT1NFKTsKCiAgICAgICAgTmFzbHVjaHVqLnNldFRleHQoIk5hc8WCdWNodWoiKTsKICAgICAgICBOYXNsdWNodWouYWRkQWN0aW9uTGlzdGVuZXIobmV3IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyKCkgewogICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoamF2YS5hd3QuZXZlbnQuQWN0aW9uRXZlbnQgZXZ0KSB7CiAgICAgICAgICAgICAgICBOYXNsdWNodWpBY3Rpb25QZXJmb3JtZWQoZXZ0KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBidG5fc2VuZC5zZXRUZXh0KCJ3eXNsaWoiKTsKICAgICAgICBidG5fc2VuZC5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXIoKSB7CiAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudCBldnQpIHsKICAgICAgICAgICAgICAgIGJ0bl9zZW5kQWN0aW9uUGVyZm9ybWVkKGV2dCk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgdHh0X3JlY01zZy5zZXRDb2x1bW5zKDIwKTsKICAgICAgICB0eHRfcmVjTXNnLnNldFJvd3MoNSk7CiAgICAgICAgalNjcm9sbFBhbmUxLnNldFZpZXdwb3J0Vmlldyh0eHRfcmVjTXNnKTsKCiAgICAgICAgamF2YXguc3dpbmcuR3JvdXBMYXlvdXQgbGF5b3V0ID0gbmV3IGphdmF4LnN3aW5nLkdyb3VwTGF5b3V0KGdldENvbnRlbnRQYW5lKCkpOwogICAgICAgIGdldENvbnRlbnRQYW5lKCkuc2V0TGF5b3V0KGxheW91dCk7CiAgICAgICAgbGF5b3V0LnNldEhvcml6b250YWxHcm91cCgKICAgICAgICAgICAgbGF5b3V0LmNyZWF0ZVBhcmFsbGVsR3JvdXAoamF2YXguc3dpbmcuR3JvdXBMYXlvdXQuQWxpZ25tZW50LkxFQURJTkcpCiAgICAgICAgICAgIC5hZGRHcm91cChqYXZheC5zd2luZy5Hcm91cExheW91dC5BbGlnbm1lbnQuVFJBSUxJTkcsIGxheW91dC5jcmVhdGVTZXF1ZW50aWFsR3JvdXAoKQogICAgICAgICAgICAgICAgLmFkZENvbnRhaW5lckdhcCgpCiAgICAgICAgICAgICAgICAuYWRkR3JvdXAobGF5b3V0LmNyZWF0ZVBhcmFsbGVsR3JvdXAoamF2YXguc3dpbmcuR3JvdXBMYXlvdXQuQWxpZ25tZW50LlRSQUlMSU5HKQogICAgICAgICAgICAgICAgICAgIC5hZGRHcm91cChsYXlvdXQuY3JlYXRlU2VxdWVudGlhbEdyb3VwKCkKICAgICAgICAgICAgICAgICAgICAgICAgLmFkZEdhcCgwLCAwLCBTaG9ydC5NQVhfVkFMVUUpCiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDb21wb25lbnQoTmFzbHVjaHVqKSkKICAgICAgICAgICAgICAgICAgICAuYWRkR3JvdXAobGF5b3V0LmNyZWF0ZVNlcXVlbnRpYWxHcm91cCgpCiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRHcm91cChsYXlvdXQuY3JlYXRlUGFyYWxsZWxHcm91cChqYXZheC5zd2luZy5Hcm91cExheW91dC5BbGlnbm1lbnQuTEVBRElORykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDb21wb25lbnQodHh0X21zZywgamF2YXguc3dpbmcuR3JvdXBMYXlvdXQuREVGQVVMVF9TSVpFLCAzMDAsIFNob3J0Lk1BWF9WQUxVRSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRHcm91cChsYXlvdXQuY3JlYXRlU2VxdWVudGlhbEdyb3VwKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ29tcG9uZW50KGpTY3JvbGxQYW5lMSwgamF2YXguc3dpbmcuR3JvdXBMYXlvdXQuUFJFRkVSUkVEX1NJWkUsIDI4NCwgamF2YXguc3dpbmcuR3JvdXBMYXlvdXQuUFJFRkVSUkVEX1NJWkUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFkZEdhcCgwLCAwLCBTaG9ydC5NQVhfVkFMVUUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgLmFkZEdhcCgxOCwgMTgsIDE4KQogICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ29tcG9uZW50KGJ0bl9zZW5kKSkpCiAgICAgICAgICAgICAgICAuYWRkR2FwKDIyLCAyMiwgMjIpKQogICAgICAgICk7CiAgICAgICAgbGF5b3V0LnNldFZlcnRpY2FsR3JvdXAoCiAgICAgICAgICAgIGxheW91dC5jcmVhdGVQYXJhbGxlbEdyb3VwKGphdmF4LnN3aW5nLkdyb3VwTGF5b3V0LkFsaWdubWVudC5MRUFESU5HKQogICAgICAgICAgICAuYWRkR3JvdXAobGF5b3V0LmNyZWF0ZVNlcXVlbnRpYWxHcm91cCgpCiAgICAgICAgICAgICAgICAuYWRkQ29udGFpbmVyR2FwKCkKICAgICAgICAgICAgICAgIC5hZGRDb21wb25lbnQoTmFzbHVjaHVqKQogICAgICAgICAgICAgICAgLmFkZEdhcCgxOCwgMTgsIDE4KQogICAgICAgICAgICAgICAgLmFkZENvbXBvbmVudChqU2Nyb2xsUGFuZTEsIGphdmF4LnN3aW5nLkdyb3VwTGF5b3V0LkRFRkFVTFRfU0laRSwgMTg1LCBTaG9ydC5NQVhfVkFMVUUpCiAgICAgICAgICAgICAgICAuYWRkUHJlZmVycmVkR2FwKGphdmF4LnN3aW5nLkxheW91dFN0eWxlLkNvbXBvbmVudFBsYWNlbWVudC5VTlJFTEFURUQpCiAgICAgICAgICAgICAgICAuYWRkR3JvdXAobGF5b3V0LmNyZWF0ZVBhcmFsbGVsR3JvdXAoamF2YXguc3dpbmcuR3JvdXBMYXlvdXQuQWxpZ25tZW50LkJBU0VMSU5FKQogICAgICAgICAgICAgICAgICAgIC5hZGRDb21wb25lbnQoYnRuX3NlbmQpCiAgICAgICAgICAgICAgICAgICAgLmFkZENvbXBvbmVudCh0eHRfbXNnLCBqYXZheC5zd2luZy5Hcm91cExheW91dC5QUkVGRVJSRURfU0laRSwgamF2YXguc3dpbmcuR3JvdXBMYXlvdXQuREVGQVVMVF9TSVpFLCBqYXZheC5zd2luZy5Hcm91cExheW91dC5QUkVGRVJSRURfU0laRSkpCiAgICAgICAgICAgICAgICAuYWRkQ29udGFpbmVyR2FwKCkpCiAgICAgICAgKTsKCiAgICAgICAgcGFjaygpOwogICAgfS8vIDwvZWRpdG9yLWZvbGQ+ICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgcHJpdmF0ZSB2b2lkIE5hc2x1Y2h1akFjdGlvblBlcmZvcm1lZChqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudCBldnQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICB0cnkgeyAgIAogICAgICAgICAgICBzZXJ2ZXIgPSBuZXcgU2VydmVyU29ja2V0KDIwMDApIDsKICAgICAgICAgICAgY2xpZW50ID0gc2VydmVyLmFjY2VwdCgpOwogICAgICAgICAgICBKT3B0aW9uUGFuZS5zaG93TWVzc2FnZURpYWxvZyhudWxsLCJQb8WCxIVjemVuaWUgdWRhbmU6ICIpOwogICAgICAgICAgICBkb3MgPSAgbmV3IERhdGFPdXRwdXRTdHJlYW0oY2xpZW50LmdldE91dHB1dFN0cmVhbSgpKTsKICAgICAgICAgICAgZGlzID0gbmV3IERhdGFJbnB1dFN0cmVhbShjbGllbnQuZ2V0SW5wdXRTdHJlYW0oKSk7CiAgICAgICAgICAgIFJlY2VpdmVNZXNzYWdlIHNlcnZlclRocmVhZCA9IG5ldyBSZWNlaXZlTWVzc2FnZShkaXMsdHh0X3JlY01zZyk7CiAgICAgICAgICAgIHNlcnZlclRocmVhZC5zZXREYWVtb24odHJ1ZSk7CiAgICAgICAgICAgIHNlcnZlclRocmVhZC5zZXROYW1lKCJDbGllbnQiKTsKICAgICAgICAgICAgc2VydmVyVGhyZWFkLnN0YXJ0KCk7CiAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAKICAgICAgICAgICBKT3B0aW9uUGFuZS5zaG93TWVzc2FnZURpYWxvZyhudWxsLCJQb8WCxIVjemVuaWUgbmlldWRhbmU6ICIpOwogICAgICAgIH0KICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgIHByaXZhdGUgdm9pZCBidG5fc2VuZEFjdGlvblBlcmZvcm1lZChqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudCBldnQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIFN0cmluZyBtID0gdHh0X21zZy5nZXRUZXh0KCk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgZG9zLndyaXRlVVRGKG0pOwogICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgIExvZ2dlci5nZXRMb2dnZXIoU2VydmVyRm9ybS5jbGFzcy5nZXROYW1lKCkpLmxvZyhMZXZlbC5TRVZFUkUsIG51bGwsIGV4KTsKICAgICAgICB9CiAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgIC8qKgogICAgICogQHBhcmFtIGFyZ3MgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgewogICAgICAgIC8qIFNldCB0aGUgTmltYnVzIGxvb2sgYW5kIGZlZWwgKi8KICAgICAgICAvLzxlZGl0b3ItZm9sZCBkZWZhdWx0c3RhdGU9ImNvbGxhcHNlZCIgZGVzYz0iIExvb2sgYW5kIGZlZWwgc2V0dGluZyBjb2RlIChvcHRpb25hbCkgIj4KICAgICAgICAvKiBJZiBOaW1idXMgKGludHJvZHVjZWQgaW4gSmF2YSBTRSA2KSBpcyBub3QgYXZhaWxhYmxlLCBzdGF5IHdpdGggdGhlIGRlZmF1bHQgbG9vayBhbmQgZmVlbC4KICAgICAgICAgKiBGb3IgZGV0YWlscyBzZWUgaHR0cDovL2QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmUuY29tL2phdmFzZS90dXRvcmlhbC91aXN3aW5nL2xvb2thbmRmZWVsL3BsYWYuaHRtbCAKICAgICAgICAgKi8KICAgICAgICB0cnkgewogICAgICAgICAgICBmb3IgKGphdmF4LnN3aW5nLlVJTWFuYWdlci5Mb29rQW5kRmVlbEluZm8gaW5mbyA6IGphdmF4LnN3aW5nLlVJTWFuYWdlci5nZXRJbnN0YWxsZWRMb29rQW5kRmVlbHMoKSkgewogICAgICAgICAgICAgICAgaWYgKCJOaW1idXMiLmVxdWFscyhpbmZvLmdldE5hbWUoKSkpIHsKICAgICAgICAgICAgICAgICAgICBqYXZheC5zd2luZy5VSU1hbmFnZXIuc2V0TG9va0FuZEZlZWwoaW5mby5nZXRDbGFzc05hbWUoKSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgIGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlci5nZXRMb2dnZXIoU2VydmVyRm9ybS5jbGFzcy5nZXROYW1lKCkpLmxvZyhqYXZhLnV0aWwubG9nZ2luZy5MZXZlbC5TRVZFUkUsIG51bGwsIGV4KTsKICAgICAgICB9IGNhdGNoIChJbnN0YW50aWF0aW9uRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgIGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlci5nZXRMb2dnZXIoU2VydmVyRm9ybS5jbGFzcy5nZXROYW1lKCkpLmxvZyhqYXZhLnV0aWwubG9nZ2luZy5MZXZlbC5TRVZFUkUsIG51bGwsIGV4KTsKICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgIGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlci5nZXRMb2dnZXIoU2VydmVyRm9ybS5jbGFzcy5nZXROYW1lKCkpLmxvZyhqYXZhLnV0aWwubG9nZ2luZy5MZXZlbC5TRVZFUkUsIG51bGwsIGV4KTsKICAgICAgICB9IGNhdGNoIChqYXZheC5zd2luZy5VbnN1cHBvcnRlZExvb2tBbmRGZWVsRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgIGphdmEudXRpbC5sb2dnaW5nLkxvZ2dlci5nZXRMb2dnZXIoU2VydmVyRm9ybS5jbGFzcy5nZXROYW1lKCkpLmxvZyhqYXZhLnV0aWwubG9nZ2luZy5MZXZlbC5TRVZFUkUsIG51bGwsIGV4KTsKICAgICAgICB9CiAgICAgICAgLy88L2VkaXRvci1mb2xkPgoKICAgICAgICAvKiBDcmVhdGUgYW5kIGRpc3BsYXkgdGhlIGZvcm0gKi8KICAgICAgICBqYXZhLmF3dC5FdmVudFF1ZXVlLmludm9rZUxhdGVyKG5ldyBSdW5uYWJsZSgpIHsKICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewogICAgICAgICAgICAgICAgbmV3IFNlcnZlckZvcm0oKS5zZXRWaXNpYmxlKHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9