java基础——UDP实现dos聊天室案例

Posted 名字真的很急用

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础——UDP实现dos聊天室案例相关的知识,希望对你有一定的参考价值。

利用UDP网络编程
UDP协议不严格区分发送端和接收端

  • 发送端
//udp打包
		byte [] b = "固定".getBytes();
		//DatagramPacket(byte[] buf, int length, InetAddress address, int port) 
		//构造用于发送长度的分组的数据报包 length指定主机上到指定的端口号。
		DatagramPacket dp = new DatagramPacket(b,b.length,InetAddress.getByName("localhost"),6666);//localhost/127.0.0.1
		
		//数据的发送
		//发送包
		DatagramSocket ds = new DatagramSocket();
		ds.send(dp);
  • 接收端
//创建DatagramSocket来接收数据报包
		DatagramSocket  ds = new DatagramSocket(6666);
		
		//接收发送端过来的数据报包
		//该方法的参数 需要一个DatagramPacket
		//DatagramPacket(byte[] buf, int length) 
		//构造一个 DatagramPacket用于接收长度的数据包 length 。
		
		byte [] b = new byte[1024];
		//创建一个容器 用来接收发送端的数据报包
		DatagramPacket dp = new DatagramPacket(b,1024);
		
		ds.receive(dp);//接收
		
		//输出
		//System.out.println(ds);
		//  byte[]  getData() 
		//返回数据缓冲区
		b = dp.getData();
		//将byte转换为字符串
		//遍历数组 取值
//		for(byte date:b) {
//			System.out.println(date);
//		}
		//String(byte[] bytes, int offset, int length) 
		//通过使用平台的默认字符集解码指定的字节子阵列来构造新的 String 。
		String s = new String(b,0,dp.getLength());
package BJday28;

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

public class Chat {
    public static void main(String[] args) {
        new Thread(){
            @Override
            public void run() {

              
            	DatagramPacket dp=null;
            	DatagramSocket ds=null;
               
            	
            	  Scanner sc = new Scanner(System.in);
                  while (true){
                	 
                      String mesg = sc.next();
                      byte [] b = mesg.getBytes();
                      if (mesg.toLowerCase().equals("no")){
                          break;
                          //system.exit(0);
                      }else {
                        try {
                         dp = new DatagramPacket(b,b.length,InetAddress.getByName("localhost"),6666);
                       	  ds = new DatagramSocket();
                          
                       	  ds.send(dp);
                          
						} catch (IOException e) {
							// TODO: handle exception
							e.printStackTrace();
						}finally {
							if(ds!=null) {
								try {
									ds.close();
								} catch (Exception e2) {
									// TODO: handle exception
								}
							}
						}
                    	  
                      }
                  }
                  
           }
        }.start();


        //客户端
        new Thread(){
            @Override
            public void run() {
            	
            	DatagramSocket  ds=null;
            	 DatagramPacket dp=null;
            	while(true) {
            	
            	byte [] b = new byte[1024];
                try {
                	  ds = new DatagramSocket(3333);
                   
                	   dp = new DatagramPacket(b,1024);
                	   ds.receive(dp);//接收
                	   b = dp.getData();
                	
               		  
               		
                         String s = new String(b,0,dp.getLength());
               		      System.out.println(s);
                    
                   
                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    if (ds!=null){
                        try {
                            ds.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                } 
                }
            }
        }.start();

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

public class ChatClient {
    public static void main(String[] args) {
        new Thread(){
            @Override
            public void run() {

              
            	DatagramPacket dp=null;
            	DatagramSocket ds=null;
               
            	 
            	  Scanner sc = new Scanner(System.in);
                  while (true){
                	 
                      String mesg = sc.next();
                      byte [] b = mesg.getBytes();
                      if (mesg.toLowerCase().equals("no")){
                          break;
                        //system.exit(0);
                      }else {
                        try {
                         dp = new DatagramPacket(b,b.length,InetAddress.getByName("localhost"),3333);
                       	  ds = new DatagramSocket();
                          
                       	  ds.send(dp);
                          
						} catch (IOException e) {
							// TODO: handle exception
							e.printStackTrace();
						}finally {
							if(ds!=null) {
								try {
								
								ds.close();
							} catch (Exception e2) {
								// TODO: handle exception
							}
							}
							
						}
						 
                      }
                  }
                  
           }
        }.start();


        //客户端
        new Thread(){
            @Override
            public void run() {
            	DatagramSocket  ds=null;
            	 DatagramPacket dp=null;
            	 
            	 while(true) {
            	byte [] b = new byte[1024];
                try {
                	  ds = new DatagramSocket(6666);
                   
                	   dp = new DatagramPacket(b,1024);
                	   ds.receive(dp);//接收
                	   b = dp.getData();
                	  
                           String s = new String(b,0,dp.getLength());
                 		      System.out.println(s);
                       
                   
                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    if (ds!=null){
                        try {
                            ds.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
                }
            }
        }.start();

    }
}

以上是关于java基础——UDP实现dos聊天室案例的主要内容,如果未能解决你的问题,请参考以下文章

java基础增强:网络编程TcpUdp案例

基于UDP协议的聊天室(java实现)

javase基础学完可以做什么,javase实现局域网聊天室

Java中使用UDP实现简单的聊天功能

Java系列讲座二:Socket网络通信实现聊天软件项目讲解(UDP)

Java系列讲座二:Socket网络通信实现聊天软件项目讲解(UDP)