• 大小: 463KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: Java
  • 标签: P2P聊天  Java  TCP  UDP  Demo  

资源简介

《分布式系统》课程的一个作业,作为一个小Demo给大家参考一下。其实聊天窗口有点小bug,就交给你们去处理吧^_^

资源截图

代码片段和文件信息

package client;

import javax.swing.Jframe;
import javax.swing.JTextArea;

import java.awt.BorderLayout;

import javax.swing.JScrollPane;

import java.awt.Component;
import java.awt.Rectangle;
import java.awt.Font;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;

import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class ClientChatDlg extends Jframe implements ActionListener {
    private JTextArea contentArea;
    private static HashMap dlgMap = new HashMap();
    private JTextField textField;
    private Socket peerSocket;
    
    //是被动连接
    private boolean isPassive = false;
    //是新连接
    private boolean isNewConnect = true;
    
    public ClientChatDlg(final String title Socket socket Component parent boolean isPassive) {
        this.isPassive = isPassive;
        
        //当前窗口加入映射,用于判断窗口是否已经打开
        dlgMap.put(title this);     
        settitle(title);
        
        setBounds(new Rectangle(0 0 350 350));
        JScrollPane scrollPane = new JScrollPane();
        getContentPane().add(scrollPane BorderLayout.CENTER);
        
        contentArea = new JTextArea();
        contentArea.setFont(new Font(“宋体“ Font.PLAIN 13));
        contentArea.setLineWrap(true);
        contentArea.setEditable(false);
        scrollPane.setViewportView(contentArea);
        
        JPanel panelSend = new JPanel();
        getContentPane().add(panelSend BorderLayout.SOUTH);
        
        textField = new JTextField();
        panelSend.add(textField);
        textField.setColumns(10);
        
        JButton btnSend = new JButton(“发送“);
        btnSend.addActionListener(this);
        btnSend.setFont(new Font(“微软雅黑“ Font.PLAIN 12));
        panelSend.add(btnSend);
        
        setLocationRelativeTo(parent);
        
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                //关闭对话框时,从映射中移除它
                dlgMap.remove(title);
                //关闭套接字
                closeChatSocket();
                super.windowClosing(e);
            }
        });
        
        setChatSocket(socket);
    }
    
    public void setChatSocket(Socket socket) {
        if (peerSocket != null)
            closeChatSocket();
        this.peerSocket = socket;
        
        //开始接收消息
        new ReceiveThread().start();
    }
    
    private void closeChatSocket() {
        try {
            peerSocket.close();
        } catch (IOException e1) {
            
        }
    }
    
    /

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-10-27 20:10  P2P聊天软件\
     文件      496640  2016-01-19 23:23  P2P聊天软件\P2P聊天软件 设计文档.doc
     目录           0  2015-10-27 19:37  P2P聊天软件\源代码\
     目录           0  2015-10-27 19:12  P2P聊天软件\源代码\client\
     文件        5367  2015-10-27 17:17  P2P聊天软件\源代码\client\ClientChatDlg.java
     文件        3484  2015-10-27 17:01  P2P聊天软件\源代码\client\ClientCore.java
     文件        9038  2015-10-27 16:50  P2P聊天软件\源代码\client\ClientMainDlg.java
     目录           0  2015-10-27 19:12  P2P聊天软件\源代码\server\
     文件        2338  2015-06-16 14:11  P2P聊天软件\源代码\server\ServerConfigPanel.java
     文件        5597  2015-10-26 11:23  P2P聊天软件\源代码\server\ServerCore.java
     文件        3879  2015-10-27 17:32  P2P聊天软件\源代码\server\ServerMainDlg.java
     文件        2178  2015-10-24 16:19  P2P聊天软件\源代码\server\ServerStartedPanel.java

评论

共有 条评论