⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chatjdialog.java

📁 能够实现基本的通讯功能是基于java和tcp编程开发的
💻 JAVA
字号:
/*
 * ChatJDialog.java
 *
 * Created on 2009年4月26日, 下午7:37
 */

package chat;

import java.net.*;
import java.io.*;
import javax.swing.*;
/**
 *
 * @author  King
 */

public class ChatJDialog extends javax.swing.JDialog{
    
    /** Creates new form ChatJDialog */
    private String IP;
    private int SendPortnum;
    private int RevPortnum;
    
    private DatagramSocket Client ;
    private DatagramSocket Server;
    private DatagramPacket packet;
    
    private dealMsg msg;
    
    private Thread chatrun;
      
    private int running;
    
    private int initSocket() {
        IP = ipAddress.getText();
        String sPort = sendPort.getText();
        String rPort = recievPort.getText();
        
        SendPortnum = Integer.valueOf(sPort);
        RevPortnum = Integer.valueOf(rPort);

        byte[] rbuf = new byte[256];
        
        packet = new DatagramPacket(rbuf,rbuf.length);
        try {
            Client = new DatagramSocket();
            Server = new DatagramSocket(RevPortnum);
        }
        catch(Exception e){
            return 0;
        }
        
        return 1;
    }
    public ChatJDialog(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        running = 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.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        ipAddress = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        recievPort = new javax.swing.JTextField();
        startChat = new javax.swing.JButton();
        jLabel3 = new javax.swing.JLabel();
        sendPort = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        recieveForm = new javax.swing.JTextPane();
        jScrollPane2 = new javax.swing.JScrollPane();
        sendForm = new javax.swing.JTextPane();
        sendMsg = new javax.swing.JButton();
        clearInfo = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Datagram Socket 聊天范例");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        jLabel1.setText("IP:");

        jLabel2.setText("接收端口:");

        startChat.setText("启动");
        startChat.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                startChatActionPerformed(evt);
            }
        });

        jLabel3.setText("发送端口:");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(ipAddress, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(16, 16, 16)
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(recievPort, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(13, 13, 13)
                .addComponent(jLabel3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(sendPort, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 29, Short.MAX_VALUE)
                .addComponent(startChat)
                .addGap(26, 26, 26))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(startChat)
                    .addComponent(ipAddress, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2)
                    .addComponent(recievPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, 17, Short.MAX_VALUE)
                    .addComponent(sendPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        jScrollPane1.setViewportView(recieveForm);

        jScrollPane2.setViewportView(sendForm);

        sendMsg.setText("发送");
        sendMsg.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                sendMsgActionPerformed(evt);
            }
        });

        clearInfo.setText("清空");
        clearInfo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                clearInfoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 471, Short.MAX_VALUE)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(clearInfo)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 337, Short.MAX_VALUE)
                .addComponent(sendMsg)
                .addContainerGap())
            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 471, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            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)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 206, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 124, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 12, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(sendMsg)
                    .addComponent(clearInfo)))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void clearInfoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearInfoActionPerformed
// TODO 将在此处添加您的处理代码:
        recieveForm.setText("");
    }//GEN-LAST:event_clearInfoActionPerformed

    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
// TODO 将在此处添加您的处理代码:
        msg.SetStopTag();
        Client.close();
        Server.close();
        running = 0;
    }//GEN-LAST:event_formWindowClosing

    private void sendMsgActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sendMsgActionPerformed
// TODO 将在此处添加您的处理代码:
        String SInfo = sendForm.getText();
        byte[] sbuf = SInfo.getBytes();
        try {
          if(SInfo !="")
            Client.send(new DatagramPacket(sbuf,sbuf.length,InetAddress.getByName(IP),SendPortnum));
        }
        catch(Exception e) {
            JOptionPane.showMessageDialog(this,"发送失败!!","错误",1);
        }
        sendForm.setText("");
    }//GEN-LAST:event_sendMsgActionPerformed

    private void startChatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startChatActionPerformed
// TODO 将在此处添加您的处理代码:
        if(running == 0) {
            if(initSocket() > 0) {
              startChat.setEnabled(false);
              ipAddress.setEnabled(false);
              sendPort.setEnabled(false);   
              recievPort.setEnabled(false);
              msg = new dealMsg(recieveForm,Server,packet);
              chatrun = new Thread(msg);
              chatrun.start();
              running = 1;
            }
        }
        else JOptionPane.showMessageDialog(this,"程序已经运行!","错误",1);
    }//GEN-LAST:event_startChatActionPerformed
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
       java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new ChatJDialog(new javax.swing.JFrame(), true).setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton clearInfo;
    private javax.swing.JTextField ipAddress;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTextField recievPort;
    private javax.swing.JTextPane recieveForm;
    private javax.swing.JTextPane sendForm;
    private javax.swing.JButton sendMsg;
    private javax.swing.JTextField sendPort;
    private javax.swing.JButton startChat;
    // End of variables declaration//GEN-END:variables
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -