java TCP网络编程简单聊天窗口(登录,注册,客户端和服务端图形界面和数据库)适合当作业或学习

wuchangjian2021-11-15 19:16:35编程学习

java基于TCP网络编程简单聊天窗口
包含登录,注册,客户端和服务端图形界面和数据库 储存注册信息
适合新人当作业或学习

在这里插入图片描述

示例图
登录界面
在这里插入图片描述
注册界面
在这里插入图片描述

聊天窗口
在这里插入图片描述

非常简洁,简洁的页面,简洁的方法。

方法介绍
/*

  • ServerSocket测试 作为tcp网络通信的服务器端
  • 1、创建ServerSocket对象,绑定监听端口
  • 2、通过accept()方法监听客户端请求
  • 3、连接建立后,通过输入流读取客户端发送的请求信息
  • 4、通过输出流向客户端发送响应信息
  • 5、关闭相关资源
  • */

主要代码

服务端

public class ChatServer extends MyPanel implements ActionListener,Runnable{
    //客户端Socket对象
    protected Socket socket;
    //读数据
    protected DataInputStream input;
    //写数据
    protected DataOutputStream output;




    public ChatServer(){
        super();
        jf.setTitle("服务端");






        //创建线程对象:run()方法中接收对方发送的字符串
        Thread t=new Thread(this);
        t.start();
        button1.addActionListener(this);
    }





    @Override
    public void actionPerformed(ActionEvent e) {

        if (e.getSource() == button1) {
            send();
        }
    }



    //发送按钮  发送信息

    private void send() {


        try {
            //发送聊天内容,对方在run()方法中接收
            output.writeUTF(Input1.getText());
            //在文本区中显示
          Text.append("服务端:" + Input1.getText() + "\n");
            //清空南边输入发送内容的文本框
            Input1.setText("");
        }catch(Exception e){
            e.printStackTrace();
        }

    }


    //接收信息

    @Override
    public void run() {



        ServerSocket server = null;
        try {
            server = new ServerSocket(7500);
            //等待客户连接,连接上后才能继续执行下面语句
            socket = server.accept();
            //从套接字读数据的流
            input = new DataInputStream(socket.getInputStream());
            //向套接字写数据的流
            output = new DataOutputStream(socket.getOutputStream());


        } catch (IOException e) {
            e.printStackTrace();
        }



        System.out.println("线程启动!");
        //保存对方发送过来的字符串
        String inStr = "";
        while (true) {
            try {
                //读取对方发送的字符串,根据不同内容分别处理
                try {
                    inStr = input.readUTF();
                } catch (IOException e) {
                    e.printStackTrace();
                }


                Text.append("客户端:"+inStr+"\n");

            } catch (Exception e) {

                System.out.println("有异常,连接中断!");
                break;
            }
        }
        System.out.println("线程结束!");

        }

客户端


public class ChatClient extends MyPanel implements ActionListener,Runnable {
    //客户端Socket对象
    protected Socket socket;
    //读数据
    protected DataInputStream input;
    //写数据
    protected DataOutputStream output;


    public ChatClient() {
        super();
        jf.setTitle("客户端");
        Thread t=new Thread(this);
        t.start();
        button1.addActionListener(this);

    }


    public void actionPerformed(ActionEvent e) {

        if (e.getSource() == button1) {
            send();
        }

    }


    //发送信息
    public void send() {


        try {
            //发送聊天内容,对方在run()方法中接收
            output.writeUTF(Input1.getText());
            //在文本区中显示
           Text.append("客户端:" + Input1.getText() + "\n");
            //清空南边输入发送内容的文本框
            Input1.setText("");
        }catch(Exception e){
            e.printStackTrace();
        }


    }


    //接受服务端的信息
    @Override
    public void run() {


        try {
            socket = new Socket("127.0.0.1", 7500);   //127.0.0.1是回送地址,指本地机,一般用来测试使用。
            //从套接字读数据的流
            input = new DataInputStream(socket.getInputStream());
            //向套接字写数据的流
            output = new DataOutputStream(socket.getOutputStream());
            //创建线程对象:run方法中接收对方发送的字符串
        } catch (IOException e) {
            e.printStackTrace();
        }



        System.out.println("线程启动!");
        //保存对方发送过来的字符串
        String inStr = "";
        while (true) {
            try {
                //读取对方发送的字符串,根据不同内容分别处理
                inStr = input.readUTF();

                    /*如果对方端发送的不是“bye”,则在本方文本区追加显示聊天内容*/
                    Text.append("服务端:"+inStr+"\n");

            } catch (Exception e) {

                System.out.println("有异常,连接中断!");
                break;
            }
        }
        System.out.println("线程结束!");

    }

很简单适合新手学习或者交作业
在这里插入图片描述

完整代码:https://download.csdn.net/download/muMason/40729699
超链接:完整代码
新人制作不易,真的是一个bug改一天!
在这里插入图片描述

相关文章

我的笔记本

11-15 一   linux指令 1.1   cp 文件  目标路径   cp...

.NET面试题——第13篇 数据访问部分

1. 连接数据库的字符串应该写在哪儿? 写在配置文件中。 2. 解释A...

你的暑假余额还有多少?湖南各市州中小学秋季开学时间来了

2022-08-12 18:07:48 你的暑假余额还剩多少?暑假作业...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。