【Java-网络编程】一对一聊天系统的实现

Java网络编程--->实现一个一对一的聊天系统

  • 简绍
  • 主类
  • 发送
  • 接收
  • 效果

简绍

  • 发送和接受分别对应一个线程,每一线程都要可以发信息和接受信息

主类

import java.net.DatagramSocket;
import java.net.SocketException;
import java.util.Scanner;

public class MainTest {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入聊天服务当前启动的端口:");
        int serverPort = input.nextInt();
        System.out.print("请输入聊天服务发送信息对象的端口:");
        int targetPort = input.nextInt();
        System.out.println("聊天系统初始化完毕!");

        try {
            //创建聊天对象的收发平台对象
            DatagramSocket socket = new DatagramSocket(serverPort);
            //分别启动俩个线程对象
            new Thread(new checkSend(socket, targetPort), "发送服务").start();
            new Thread(new checkRecever(socket), "接收服务").start();
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }
}

发送

import java.io.IOException;
import java.net.*;
import java.util.Scanner;

//实现Runnable接口
public class checkSend implements Runnable {
    private DatagramSocket socket;
    private int targetPort;
    
    public checkSend(DatagramSocket socket, int targetPort) {
        this.socket = socket;
        this.targetPort = targetPort;
    }

    @Override
    public void run() {
        try {
            //输入要传送的信息
            Scanner input = new Scanner(System.in);
            while (true) {
                String data = input.nextLine();
                //转换输入信息的数据类型
                byte[] bytes = data.getBytes();
                //对数据进行包装
                DatagramPacket packet = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("127.0.0.1"), targetPort);
                //发送信息
                socket.send(packet);
            }
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

接收

import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class checkRecever implements Runnable {
    private DatagramSocket socket;

    public checkRecever(DatagramSocket socket){
        this.socket = socket;
    }
    @Override
    public void run() {
        try{
            byte [] bytes = new byte[1024];
            DatagramPacket packet = new DatagramPacket(bytes,bytes.length);
            while (true){
                //接收传过来的信息
                socket.receive(packet);
                String str = new String(packet.getData(),0,packet.getLength());
                System.out.println("收到"+packet.getAddress()+":"+packet.getPort()+"发送数据:"+str);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

效果

【Java-网络编程】一对一聊天系统的实现_第1张图片
【Java-网络编程】一对一聊天系统的实现_第2张图片

你可能感兴趣的:(Java,网络,java,socket,http)