JAVA中TCP,UDP传输 简单的聊天室程序

21 篇文章 0 订阅
14 篇文章 0 订阅

JAVA中聊天室程序

要求:
编写一个聊天程序
有收数据的部分,也同时有发数据的部分。
这两部分需要同时执行,那就需要用到多线程技术。
一个线程控制发,一个线程控制收。

注意

这里我们需要注意的是,因为收发动作是不一致的,所以要定义两个run方法,而且这两个方法要封装到不同的类中。并且,我们在写出我们的地址时,如果是一对一我们可以写出目的的IP地址即可,也可以写成255形式,如目标地址是10.34.0.114,这时双方两人进行聊天,也可以是10.34.0.255,广播的方式让在这个频段的主机都可以收到讯息。

代码

import java.io.*;
import java.net.*;
/*
 因为收和发动作是不一致的,所以要定义两个run方法。
 而且这两个方法要封装到不同的类中。
 */
	class Send implements Runnable{
		private DatagramSocket ds;//私有化成员
		public Send(DatagramSocket ds){
			this.ds=ds;
		}
		public void run(){//重写run方法
			try{//发送端,读键盘,封装在一个单独线程当中
				BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));//转化流
				String line=null;
				while((line=bufr.readLine())!=null){
					if("886".equals(line))
						break;
					byte[] buf=line.getBytes();//建立缓冲区
					DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("10.32.0.255"),10006);//发送到哪去,获取主机的信息
					ds.send(dp);//将包投递出去
				}
			}
			catch(Exception e){
				   throw new RuntimeException("发送失败");
			}
		}
	}
	
	class Rece implements Runnable{
		private DatagramSocket ds;
		public Rece(DatagramSocket ds){
			this.ds=ds;
		}
		public void run(){
			try{
				 while(true){//循环接受
					 byte[] buf=new byte[1024];//创建缓存区
					 DatagramPacket dp=new DatagramPacket(buf,buf.length);//数据包接受数据
				     ds.receive(dp);//将接受的数据存储到定义好的数据包中
				     String ip=dp.getAddress().getHostAddress();//获取发送端主机地址和主机信息
				     String data=new String(dp.getData(),0,dp.getLength());
				     System.out.println(ip+":"+data);//
				 }
			}
			catch(Exception e){
				throw new RuntimeException("接收端失败");
			}
		}
	}
	/*
	 主函数
	 */
	class liaotian1{
		public static void main(String args[])throws Exception{
			DatagramSocket sendSocket=new DatagramSocket();//发送端服务
			DatagramSocket receSocket=new DatagramSocket(10006);//接收端服务
			new Thread(new Send(sendSocket)).start();//创建thread类 开启多线程
			new Thread(new Rece(receSocket)).start();//
		}
	}

结果

很尴尬,我没有结果。由于本人的笔记本电脑的限制,在经历了一次重装后,本人没有安装VM虚拟机,所以现在不能演示。
本次代码的条件是需要两台或者两台以上在一个局域网中的电脑才可以进行聊天室的功能
具体的操作是,在DOS命令行上进行JAVAC 后JAVA liaotian1即可,等候其他人的加入进行聊天。
注意,在这里不再一个局域网中,即使是找到了目标的IP地址,链接了internet也是无法进行聊天,本人亲测
才疏学浅,大部分代码还是在看毕向东老师的视频中学习,还请各位大神多多指点。如有结果图,还请给我一张~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值