基于Udp的聊天室(DatagramSocket和DatagramPacket两个类)

import java.io.*;
import java.net.*;
import java.lang.*;
public class Chat{
	
	public static void main(String []args) throws Exception{
		DatagramSocket Sendds=new DatagramSocket();
		DatagramSocket Receds=new DatagramSocket(10007);
		new Thread(new Send(Sendds)).start();
		new Thread(new Receive(Receds)).start();
			
		}
}

class Send implements Runnable//发送类
{
	private DatagramSocket ds;
	public Send(DatagramSocket ds){

		this.ds=ds;
	}
	public void run(){
		try{
			boolean flag=true;
		while(flag){

			
			BufferedReader br=
				new BufferedReader(new InputStreamReader(System.in));

			String s="";
			
			while((s=br.readLine())!=null){
				DatagramPacket dp=null;
					if(s.equals("over")){
						dp=new DatagramPacket(s.getBytes(),s.getBytes().length,
							InetAddress.getByName("127.0.0.1"),10006);//在数据报包中指定具体的向那个主机的那个端口发,当然一字节的形式
					flag=false;
					ds.send(dp);
					break;
					
					
				}
				else{
						dp=new DatagramPacket(s.getBytes(),s.getBytes().length,
								InetAddress.getByName("127.0.0.1"),10006);
					ds.send(dp);
				System.out.println("你说:"+s);
					flag=true;
				}
			}
			
			if(flag==false){
			System.out.println(flag);
				break;
			}	
			}
		
		}catch(Exception e){
			System.out.println("发送数据异常。。。");
		}
		ds.close();
		
	}

}
class Receive implements Runnable //接收类
{
	private DatagramSocket ds;
	public Receive(DatagramSocket ds){

		this.ds=ds;
	}
	public void run(){
	try{
			
		while(true){
			

				byte[] buf=new byte[1024*64];
				DatagramPacket dp=new DatagramPacket(buf,buf.length);
				ds.receive(dp);
				System.out.println("hah ");
				String ip=dp.getAddress().getHostAddress();
				String data=new String (buf,0,dp.getLength());
				
				if(data.equals("over")){
					data="我结束了本次对话。。。拜拜";
				System.out.println("ip地址为:"+ip+"   他说:"+data);

					break;
				}
				System.out.println("ip地址为:"+ip+"   他说:"+data);

			
			}
			}catch(Exception e){
				System.out.println("接收数据异常。。。。");
		}

	}

}


我写的是127,0,0,1访问的是自己电脑,也可以换ip,同样被访问的主机也应该  运行此程序,,但是要改一个不冲突的  端口。。。  即可在doc环境下实现多人聊天(多线程实现)。底下是程序运行截图。。。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值