改案例需要用到多线程

视图(view)代码;

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

public class View {

	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入当前程序端口号:");
		int myPort = sc.nextInt();
		
		System.out.println("请输入你要绑定对方的端口号 :");
		int sendPort = sc.nextInt();
		
		System.out.println("聊天系统初始化完成,已启动!!!");
		
		
		//1.创建Socket码头对象
		DatagramSocket socket = new DatagramSocket(myPort);
		
		//2.开启俩条线程
		
		//2.1 发送端线程
		new Thread(new SendSocket(socket,sendPort)).start();
		
		//2.2 接收端线程
		new Thread(new ReceiveSocket(socket)).start();
	}

}

客户端(send):

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Scanner;

public class SendSocket implements Runnable{
	
	private DatagramSocket socket;
	private int sendPort;
	

	public SendSocket(DatagramSocket socket, int sendPort) {
		this.sendPort = sendPort;
		this.socket = socket;
	}

	@Override
	public void run() {
		Scanner sc = new Scanner(System.in);
		
		while (true) {
			try {
				System.out.println("请输入你要发送的数据:");
				String content = sc.nextLine();
				byte[] buf = content.getBytes();
				DatagramPacket	packet = new DatagramPacket(buf, buf.length,InetAddress.getByName("127.0.0.1"), sendPort);
				socket.send(packet);
				
			} catch (Exception e) {
				e.printStackTrace();
			}
			
			
		}
		
	}

	

}

接收(服务端)代码:


import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class ReceiveSocket implements Runnable{

	private DatagramSocket socket;
	public ReceiveSocket(DatagramSocket socket) {
		this.socket = socket;
	}

	@Override
	public void run() {
		byte[] bys = new byte[1024];
		DatagramPacket packet = new DatagramPacket(bys, bys.length);
		while (true) {
			try {
				socket.receive(packet);
				
				byte[] data = packet.getData();
				int length = packet.getLength();
				
				String content = new String(data,0,length);
				
				System.out.println(packet.getAddress()+"发送过来的数据为:"+ content);
				
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	
}

(属个人爱好,也可以在eclipse下)
可以在项目文件下运行cmd
输入 start开启另一个窗口
在这里插入图片描述

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐