📄 icqframe.java
字号:
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, 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(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField1ActionPerformed
send(); // TODO 将在此处添加您的处理代码:
}//GEN-LAST:event_jTextField1ActionPerformed
private void jLabel2MousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel2MousePressed
// TODO 将在此处添加您的处理代码:
}//GEN-LAST:event_jLabel2MousePressed
private void jList1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jList1MouseClicked
int index;
if (evt.getClickCount() == 2)
{
index = jList1.locationToIndex(evt.getPoint());
String tmp = (String)model.getElementAt(index);
if (tmp!=null){
try {
status = 1;
/* String kk = "d[sfds]login";
if (kk.endsWith("login"))
{model.addElement(kk.substring(kk.indexOf("[")+1,kk.lastIndexOf("]")));
jList1.setModel(model);}*/
String messag = "con"+my_name + "[" + InetAddress.getLocalHost() + "] LanICQ " + group
+ jTextField1.getText() ;
DatagramPacket hi = new DatagramPacket(messag.getBytes(),
messag.getBytes().length, group, 4000);
socket.send(hi);
// new ReaderThread().start();
new server().start();
}catch(Exception ex) {
jTextArea1.append("无法连接"+tmp+":" + ex + "\n");
ex.printStackTrace();
}
}
//new server.start();
//jCheckBox1.set
}
}//GEN-LAST:event_jList1MouseClicked
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new icqframe().setVisible(true);
}
});
}
void join() {
try {
jTextArea1.append("尝试进入LanICQ...\n");
String ip = "225.0.0.1";
group = InetAddress.getByName(ip);
socket = new MulticastSocket(4000);
socket.joinGroup(group);
String message ="log:"+ my_name + "[" + InetAddress.getLocalHost() + "] LanICQ " + jTextField1.getText();
DatagramPacket hi = new DatagramPacket(message.getBytes(),
message.getBytes().length, group, 4000);
socket.send(hi);
new ReaderThread().start();
}catch(Exception ex) {
jTextArea1.append("无法进入聊天室:" + ex + "\n");
ex.printStackTrace();
}
}
class ReaderThread extends Thread {
public void run() {
while(socket != null) {
try {
byte[] buf = new byte[256];
DatagramPacket recv = new DatagramPacket(buf, buf.length);
socket.receive(recv);
m = new String(recv.getData());
jTextArea1.append("\n"+m);
if (m.startsWith("log")){
usr = m.substring(4,m.indexOf("["));
ip = m.substring(m.indexOf("[")+4,m.lastIndexOf("]"));
hash.put(usr,ip);
model.addElement(usr);
jList1.setModel(model);
jTextArea1.append(ip);
}
else if (m.startsWith("con"))
{
usr = m.substring(4,m.indexOf("["));
ip = m.substring(m.indexOf("[")+4,m.lastIndexOf("]"));
if ( status == 0) {
new client().start();status = 0; }
}
}catch(Exception ex) {
}
}
}
}
class client extends Thread{
public void run(){
ClientFram c = new ClientFram(ip);
}
}
class server extends Thread{
public void run(){
ServerFrame s = new ServerFrame();
}
}
void send() {
if(socket == null) return;
try {
//String ip = "225.0.0.1";
//group = InetAddress.getByName(ip);
String message ="cat:"+ my_name + "[" + InetAddress.getLocalHost() + "] :"+jTextField1.getText();
DatagramPacket hi = new DatagramPacket(message.getBytes(),
message.getBytes().length, group, 4000);
socket.send(hi);
jTextField1.requestFocus();
jTextField1.selectAll();
}catch(Exception ex) {
jTextArea1.append("无法发送消息:" + ex + "\n");
}
}
// private group all ;
private DefaultListModel model = new DataModel();
private String m;
private String my_name;
private String tmp;
private int status = 0;
private MulticastSocket socket = null;
private DatagramSocket udpsocket = null;
private DatagramPacket udppacket;
private InetAddress group = null;
private Hashtable hash = new Hashtable();
private String usr = "服务器";
private String ip;
// private Receiver receive;
// 变量声明 - 不进行修改//GEN-BEGIN:variables
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JList jList1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
// 变量声明结束//GEN-END:variables
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -