基于UDP的网络编程实现简单聊天室

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

public class Sender {

	public static void main(String[] args) {
		
		DatagramSocket ds=null;	
		try {
			//创建DataGramSocket对象,制定发送方的端口号
			System.out.println("同学上线了");
			ds = new DatagramSocket(8888);
			while(true) {
				//将同学的输入转成字节数组
				Scanner sc=new Scanner(System.in);
				System.out.print("学生:");
				String str=sc.next();
				byte [] a=str.getBytes();
				//创建一个数据包,用该数据包包裹同学信息发送给接受者咨询老师
				DatagramPacket dp=new DatagramPacket(a, a.length, InetAddress.getByName("192.168.51.179"), 10001);
				ds.send(dp);
				
				
				//准备一个空的数据包,用来接收数据
				 byte[] b=new byte[1024];
		         DatagramPacket dp1=new DatagramPacket(b, b.length);
		         ds.receive(dp1);
		         
		         System.out.println("咨询老师:"+new String(dp1.getData(),0,dp1.getLength()));
			}
			
			
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			//关闭
			ds.close();
		}	
			
	}
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

public class Receiver {

	public static void main(String[] args) {
		
		
		DatagramSocket ds=null;
		try {
			//创建DataGramSocket对象,制定接受方的端口号
			System.out.println("咨询老师上线了");
			ds = new DatagramSocket(10001);
			while(true) {
				//准备一个空的数据包,用来接收数据
				byte [] a=new byte[1024];
				DatagramPacket dp=new DatagramPacket(a, a.length);
				//接受数据,存放在数据包中
				ds.receive(dp);
				
				/*
				 * dp.getData()得到的是一个字节数组,我要展示的话就要将字节数组转为字符串.
				 *  通过后两个参数控制输出的长度
				 */
				System.out.println("同学:"+new String(dp.getData(),0,dp.getLength()));
				
				//将老师输入转成字节数组
				Scanner sc=new Scanner(System.in);
				System.out.print("咨询老师:");
				String str=sc.next();
				byte [] b=str.getBytes();
				//创建一个数据包,用该数据包包裹同学信息发送给接受者咨询老师
				DatagramPacket dp1=new DatagramPacket(b, b.length, InetAddress.getByName("192.168.51.179"), 8888);
				ds.send(dp1);
			}
			
			
		} catch ( IOException e) {
			e.printStackTrace();
		}finally {
			ds.close();
		}	
	}

}

运行效果:

咨询老师上线了
同学:老师,我想学java
咨询老师:同学,你有基础吗
同学:没有呢,零基础可以学吗
咨询老师:可以呢
同学:那学费是多少呢
咨询老师:19998,可以接受吗
同学:有点小贵
咨询老师:
同学上线了
学生:老师,我想学java
咨询老师:同学,你有基础吗
学生:没有呢,零基础可以学吗
咨询老师:可以呢
学生:那学费是多少呢
咨询老师:19998,可以接受吗
学生:有点小贵

-------------------------------------------------------------------------------------------------------------------------------------------

以上聊天无法结束,可以加入一个if判断,当学生输入再见,结束对话。

猜你喜欢

转载自blog.csdn.net/pengzonglu7292/article/details/85109197