Java网络编程-UDP案例-聊天程序
改案例需要用到多线程视图(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 = ne
·
改案例需要用到多线程
视图(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开启另一个窗口
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐


所有评论(0)