codice:
/*
* NewJFrameChat.java
*
* Created on 15-feb-2012, 13.32.51
*/
package chatp2p;
import java.net.*;
/**
*
* @author Elena
*/
public class NewJFrameChat extends javax.swing.JFrame {
String username;
Boolean isConnected = false;
MulticastSocket socket;
InetAddress gruppo;
DatagramPacket pack;
String message;
/** Creates new form NewJFrameChat */
public NewJFrameChat() {
initComponents();
}
public class IncomingReader implements Runnable{
public void run() {
String stream;
String[] data;
String connect = "Connect", disconnect = "Disconnect", chat = "Chat";
DatagramPacket p;
byte buffer[] = new byte [1000];
try
{
while (isConnected == true)
{
p = new DatagramPacket(buffer,buffer.length);
socket.receive(p);
stream = new String(p.getData(), 0, p.getLength());
/*data = stream.split("¥");
*
if (data[2].equals(chat))
{
chatArea.append(data[0] + ": " + data[1] + "\n");
}
if (data[2].equals(connect))
{
chatArea.removeAll();
chatArea.append(data[0]+" si è unito alla conversazione.\n");
userslistArea.append(data[0]+"\n");
}
if (data[2].equals(disconnect))
{
chatArea.append(data[0]+" è uscito dalla conversazione");
}*/
chatArea.append(stream+"\n");
}
}
catch(Exception e)
{
chatArea.append("Errore: "+e.toString()+".\n");
}
}
}
public void ListenThread()
{
Thread IncomingReader = new Thread(new IncomingReader());
IncomingReader.start();
}
public void inviomessconnessione (String u)
{
String m;
byte buff[] = new byte[1000];
try
{
m = (u+": è connesso.\n");
buff = m.getBytes();
pack = new DatagramPacket(buff,buff.length,gruppo,5000);
socket.send(pack);
}
catch(Exception e)
{
chatArea.append("Errore1:"+e.toString()+".\n");
}
}
public void inviomessdisconnessione(String u)
{
String m;
byte buff[]= new byte[1000];
try
{
m = (u+": si è disconnesso.\n");
buff = m.getBytes();
pack = new DatagramPacket(buff,buff.length,gruppo,5000);
socket.send(pack);
}
catch(Exception e)
{
//chatArea.append("Errore2:"+e.toString()+".\n");
}
}
/** 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() {
connectButton = new javax.swing.JButton();
jButton1 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
userField = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
chatArea = new javax.swing.JTextArea();
jScrollPane2 = new javax.swing.JScrollPane();
userslistArea = new javax.swing.JTextArea();
jLabel2 = new javax.swing.JLabel();
jScrollPane3 = new javax.swing.JScrollPane();
messArea = new javax.swing.JTextArea();
sentButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
connectButton.setText("Connetti");
connectButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
connectButtonActionPerformed(evt);
}
});
jButton1.setText("Disconnetti");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jLabel1.setText("Username:");
chatArea.setColumns(20);
chatArea.setEditable(false);
chatArea.setLineWrap(true);
chatArea.setRows(5);
jScrollPane1.setViewportView(chatArea);
userslistArea.setColumns(20);
userslistArea.setEditable(false);
userslistArea.setRows(5);
jScrollPane2.setViewportView(userslistArea);
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel2.setText("Utenti connessi");
messArea.setColumns(20);
messArea.setRows(5);
jScrollPane3.setViewportView(messArea);
sentButton.setText("Invia");
sentButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
sentButtonActionPerformed(evt);
}
});
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()
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 494, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(sentButton, javax.swing.GroupLayout.DEFAULT_SIZE, 105, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(userField, javax.swing.GroupLayout.PREFERRED_SIZE, 153, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(connectButton, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 188, Short.MAX_VALUE))))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(userField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(connectButton)
.addComponent(jButton1)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 273, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 11, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(sentButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jScrollPane3))
.addContainerGap())
);
pack();
}
// </editor-fold>