`

java写的简单点对点聊天

 
阅读更多

import java.awt.Color;import java.awt.Container;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.InetAddress;import java.net.ServerSocket;import java.net.Socket;import javax.swing.ButtonGroup;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JRadioButton;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;public class QQ extends JFrame implements ActionListener {        public static void main(String args[]) {                QQ qq = new QQ();        }        String input;        ServerSocket ss;        Socket s1, s2;        PrintWriter pw;        BufferedReader br;        private server s;        private client cc;        private JLabel l1, l2, l3, l4, l5, l6;        private JRadioButton jb[] = new JRadioButton[2];        private JTextField jf1, jf2, jf3, jf4;        private JButton j1, j2, j3;        private JTextArea ja;        public QQ() {                super("聊天");                Container c = getContentPane();                c.setLayout(null);                l1 = new JLabel("TCP通信程序");                l1.setFont(new Font("宋体", Font.BOLD, 16));                l1.setBackground(Color.black);                l1.setSize(2000, 20);                l1.setLocation(10, 10);                c.add(l1);                String str1[] = { "服务端", "客户端" };                ButtonGroup bg = new ButtonGroup();                for (int x = 0; x < str1.length; x++) {                        jb[x] = new JRadioButton(str1[x]);                        jb[x].setFont(new Font("宋体", Font.BOLD, 15));                        jb[x].setForeground(Color.black);                        jb[x].setSize(80, 40);                        jb[x].setLocation(10 + x * 80, 37);                        bg.add(jb[x]);                        c.add(jb[x]);                }                jb[0].setSelected(true);                l2 = new JLabel("连接主机IP");                l2.setFont(new Font("宋体", Font.BOLD, 16));                l2.setBackground(Color.black);                l2.setSize(120, 20);                l2.setLocation(20, 80);                c.add(l2);                jf1 = new JTextField("127.0.0.1");                jf1.setSize(220, 30);                jf1.setLocation(120, 80);                c.add(jf1);                jf3 = new JTextField("离线");                jf3.setSize(150, 30);                jf3.setLocation(280, 40);                c.add(jf3);                l5 = new JLabel("连接状态:");                l5.setFont(new Font("宋体", Font.BOLD, 16));                l5.setBackground(Color.black);                l5.setSize(120, 20);                l5.setLocation(200, 47);                c.add(l5);                l6 = new JLabel("昵称:");                l6.setFont(new Font("宋体", Font.BOLD, 16));                l6.setBackground(Color.black);                l6.setSize(120, 20);                l6.setLocation(200, 12);                c.add(l6);                jf4 = new JTextField("请输入昵称!");                jf4.setSize(150, 30);                jf4.setLocation(280, 10);                c.add(jf4);                j1 = new JButton("连接");                j1.setSize(110, 20);                j1.setLocation(360, 85);                j1.addActionListener(this);                c.add(j1);                l3 = new JLabel("接收到的信息");                l3.setFont(new Font("宋体", Font.BOLD, 16));                l3.setBackground(Color.black);                l3.setSize(120, 20);                l3.setLocation(20, 130);                c.add(l3);                ja = new JTextArea();                ja.setSize(250, 200);                ja.setLineWrap(true);                ja.setEditable(false);                JScrollPane js = new JScrollPane(ja);                js.setBounds(130, 130, 250, 200);                c.add(js);                l4 = new JLabel("发送信息");                l4.setFont(new Font("宋体", Font.BOLD, 16));                l4.setBackground(Color.black);                l4.setSize(120, 20);                l4.setLocation(20, 340);                c.add(l4);                jf2 = new JTextField("");                jf2.setSize(220, 30);                jf2.setLocation(120, 340);                c.add(jf2);                j2 = new JButton("发送信息");                j2.setSize(110, 20);                j2.setLocation(360, 350);                j2.addActionListener(this);                c.add(j2);                j3 = new JButton("结束连接");                j3.setSize(110, 20);                j3.setLocation(360, 110);                j3.addActionListener(this);                c.add(j3);                s = new server();                cc = new client();                j3.setEnabled(false);                j2.setEnabled(false);                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                setSize(500, 450);                setVisible(true);                setLocation(300, 300);        }        public void actionPerformed(ActionEvent e) {                // TODO 自动生成方法存根                if (e.getSource() == j1) {                        try {                                if (jb[0].isSelected() == true) {                                        input = "";                                        s.start();                                } else {                                        input ="";                                        cc.start();                                }                        } catch (Exception ee) {                                jf3.setText("发生错误");                        }                }                if (e.getSource() == j2) {                        ja.append(jf4.getText() + ": " + jf2.getText() + "\n");                        pw.write(jf4.getText() + ": " + jf2.getText() + "\n");                        jf2.setText("");                        pw.flush();                }                if (e.getSource() == j3) {                        try {                                if (jb[0].isSelected() == true) {                                        s1.close();                                        jf3.setText("离线");                                        jf3.setBackground(Color.WHITE);                                        j2.setEnabled(false);                                        j3.setEnabled(false);                                        j1.setEnabled(true);                                        s.stop();                                        ss.close();                                        cc.stop();                                        s2.close();                                }else {                                        s2.close();                                        jf3.setText("离线");                                        jf3.setBackground(Color.WHITE);                                        j2.setEnabled(false);                                        j3.setEnabled(false);                                        j1.setEnabled(true);                                        s.stop();                                        ss.close();                                        cc.stop();                                        s1.close();                                                                        }                        } catch (Exception e1) {                                // TODO 自动生成 catch 块                        }                }        }        class server extends Thread {                public void run() {                        try {                                j1.setEnabled(false);                                jf3.setText("正在连接中@");                                ss = new ServerSocket(4000);                                s1 = ss.accept();                                br = new BufferedReader(new InputStreamReader(s1                                                .getInputStream()));                                pw = new PrintWriter(s1.getOutputStream(), true);                                // bs=new BufferedOutputStream(os);                                while (true) {                                        if (ss.isBound() == true) {                                                jf3.setText("连接成功");                                                jf3.setBackground(Color.GREEN);                                                j2.setEnabled(true);                                                j3.setEnabled(true);                                                                                                break;                                        }                                }                                while (true) {                                        input = br.readLine();                                        if (input.length() > 0) {                                                ja.append(input);                                                ja.append("\n");                                        }                                }                        } catch (Exception e) {                                // TODO 自动生成 catch 块                        }                }        }        class client extends Thread {                public void run() {                        try {                                j1.setEnabled(false);                                jf3.setText("正在连接中@");                                s2 = new Socket(InetAddress.getByName(jf1.getText()), 4000);                                // s2=new Socket();                                // s2.connect(new InetSocketAddress(jf1.getText(),21),1000);                                br = new BufferedReader(new InputStreamReader(s2                                                .getInputStream()));                                pw = new PrintWriter(s2.getOutputStream(), true);                                // bs=new BufferedOutputStream(os);                                while (true) {                                        if (s2.isConnected() == true) {                                                jf3.setText("连接成功");                                                jf3.setBackground(Color.GREEN);                                                j2.setEnabled(true);                                                j3.setEnabled(true);                                                break;                                        }                                }                                input = "";                                while (true) {                                        input = br.readLine();                                        if (input.length() > 0) {                                                ja.append(input + "\n");                                        }                                }                        } catch (Exception e) {                                // TODO 自动生成 catch 块                        }                }        }}
分享到:
评论

相关推荐

    简单的点对点java聊天程序

    简单的java聊天程序,实现了点对点聊天

    Java Socket实现简单点对点聊天软件

    Java Socket实现的简单点对点聊天软件是一种基于网络通信的C/S(客户端/服务器)架构的应用。在这个系统中,服务器端作为一个中央节点,接收并转发客户端之间的消息,而客户端则负责用户交互,发送和接收聊天内容。...

    java点对点聊天系统

    总的来说,Java实现的点对点聊天系统是一个综合性的项目,它结合了网络编程、多线程、数据编码解码、音频处理、分布式通信以及用户界面设计等多个技术层面,对开发者的技术要求较高,但同时也提供了丰富的学习和实践...

    简易点对点聊天室(java)

    在这个场景下,我们看到的是一个基于Java实现的简单点对点聊天室项目。该项目由两个主要的Java源文件组成:`Myserversocket.java`和`Mysocket.java`,它们分别代表了服务器端和客户端的角色。 首先,让我们来看看`...

    java点对点语音实时聊天

    本项目是用Java语言实现的点对点语音实时聊天系统,它允许用户之间进行即时的音频交流。下面将详细探讨该系统可能涉及的关键技术点、设计模式以及实现原理。 1. **Java语音处理库**:实现语音聊天的核心是处理音频...

    java点对点聊天代码

    在这个基于Java的简单点对点聊天系统中,我们将探讨如何构建这样一个基本的聊天应用。 首先,我们看到代码中定义了一个名为`Server`的类,它继承自`JFrame`,这表明我们的服务器端程序是一个具有图形用户界面(GUI...

    Java点对点聊天程序

    该程序用DatagramSocket收发数据,实现点对点的消息发送功能。 程序开始运行时弹出设定服务监听端口的消息框,默认的监听端口是11111,然后在主界面中指定对方的IP地址和端口号,创建数据报后即发往指定地址。

    java写的简单聊天程序

    在这个“java写的简单聊天程序”中,我们主要关注的是如何使用Java来实现一个基本的多线程聊天应用。下面将详细探讨相关知识点。 首先,我们来看`Server.java`。在服务器端,一般会创建一个监听线程,用于接收...

    JAVA简单的点对点聊天软件

    在这个名为"JAVA简单的点对点聊天软件"的项目中,我们将深入探讨如何使用Java语言实现这样一个功能。该项目涉及的主要知识点包括Java编程基础、Socket编程、多线程以及网络通信协议。 首先,Java编程是实现这个项目...

    JAVA编写的简单聊天软件

    【JAVA编写的简单聊天软件】是一个使用JAVA编程语言开发的简易通信应用,它允许用户进行...以上就是“JAVA编写的简单聊天软件”中涉及的主要技术点。通过学习和理解这些知识,开发者可以构建出自己的交互式通信系统。

    ClientUDP.rar_java udp_java 聊天程序_点对点聊天_点对点聊天 UDP

    总的来说,这个“ClientUDP.rar”项目提供了一个使用Java UDP实现的点对点聊天程序示例,适合学习和理解如何在Java中运用UDP进行网络通信。通过研究源代码,开发者可以学习到如何设计和实现一个基本的UDP客户端,...

    java java简单的聊天程序

    本项目名为“Java简单聊天程序”,旨在提供一个基础的、易于理解的示例,帮助初学者掌握Java网络编程的基本概念和技术。在这个简单的聊天程序中,我们将探讨以下几个关键知识点: 1. **Socket编程**:Java的Socket...

    java 点对点聊天

    Java 点对点聊天程序是一种基于Java编程语言实现的通信应用,它允许用户在局域网内部进行实时的文本交流。对于初学者来说,这样的项目是理解网络编程、多线程以及用户界面设计等概念的理想实践。下面我们将深入探讨...

    JAVA写的QQ聊天

    在本项目中,“JAVA写的QQ聊天”是一个使用Java编程语言实现的简单聊天应用程序,它能够支持多个人同时进行在线交流。这个程序的核心概念是多线程技术,这使得它可以同时处理多个用户的输入和输出,从而实现多人聊天...

    一个用java写的聊天室,附带源码,测试过可以用

    以下是对这个Java聊天室的一些关键知识点的详细说明: 1. **Java Socket编程**:Java聊天室的核心在于Socket编程,它是Java提供的用于网络通信的基础类库。Socket允许两台计算机通过网络连接交换数据。在聊天室中,...

    java-ChatOneToOne.rar_局域网_点对点_点对点 java_聊天 java_聊天软件 java

    ChatOneToOne是一个针对Java编程初学者设计的局域网点对点聊天软件项目。这个软件允许在同一局域网内的两个用户之间进行实时通信,提供了一种简单而有效的沟通方式。源代码的提供使得学习者能够深入理解Java编程在...

    Java聊天程序 简单源码.rar

    总之,"Java聊天程序 简单源码.rar" 包含了Java网络编程、多线程、GUI设计、数据传输等多个核心知识点,对于学习和理解Java应用程序的开发具有很高的参考价值。通过分析和研究这个源代码,开发者可以深化对Java编程...

    Java 套接字(Socket)实现的简单局域网点对点聊天工具

    在本项目中,"Java 套接字(Socket)实现的简单局域网点对点聊天工具"是一个基于Java的本地网络通信应用,允许用户通过输入IP地址直接进行聊天。这个工具监听4700端口,这是应用程序之间建立连接并交换数据的特定通道...

    java写的聊天简单版本,还有一些功能没有实现,只是一个思路

    标题中的"java写的聊天简单版本"指的是一款基于Java编程语言开发的初级阶段的聊天应用程序。Java作为一种广泛使用的面向对象的编程语言,因其跨平台性、丰富的类库以及强大的社区支持,常被用于开发各种类型的应用...

    用java编写的简单聊天程序

    【标题】:“用Java编写的简单聊天程序” 在IT领域,Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处运行”的特性而闻名。本项目是一个基于Java实现的简单聊天程序,它展示了如何利用Java进行网络...

Global site tag (gtag.js) - Google Analytics