首页 > 其他分享 >题目:完成网站的咨询聊天(UDP)

题目:完成网站的咨询聊天(UDP)

时间:2022-09-20 21:34:43浏览次数:47  
标签:UDP 题目 String System 聊天 new ds dp out

题目:完成网站的咨询聊天(UDP)

学生端:

package com.gao.Project.Pro6;

import java.io.IOException;
import java.net.*;
import java.util.Scanner;

public class TestSend {//发送方:

    public static void main(String[] args){
        System.out.println("学生上线");
        //1.准备套接字:指定发送方的端口号
        DatagramSocket ds = null;
        try {
            ds = new DatagramSocket(8888);
           while (true){
               //2.准备数据包
               Scanner sc = new Scanner(System.in);
               System.out.print("学生:");
               String str = sc.next();

               byte[] bytes = str.getBytes();
        /*
        需要四个参数:
        1.指的是传递数据转为字节数组
        2.字节数组的长度
        3.封装接收方的ip
        4.指定接收方的端口号
         */
               DatagramPacket dp = new DatagramPacket(bytes,bytes.length,InetAddress.getByName("localhost"),9999);
               //发送:
               ds.send(dp);
               if(str.equals("再见")){
                   System.out.println("学生下线了");
                   break;
               }

               //接收老师发回来的信息
               byte[] b = new byte[1024];
               DatagramPacket dp2 = new DatagramPacket(b,b.length);
               //接收对方的数据包,然后放入我们的dp数据包中填充
               ds.receive(dp2);//接收完以后dp里面就填充好内容了

               //4.取出数据:
               byte[] data = dp2.getData();
               String s = new String(data,0, dp2.getLength());//dp.getLength()数组包中的有效长度
               System.out.println("老师对我说:"+s);
           }


        } catch (SocketException e) {
           e.printStackTrace();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //关闭资源
            ds.close();
        }



    }
}

教师端:

package com.gao.Project.Pro6;

import java.io.IOException;
import java.net.*;
import java.util.Scanner;

public class TestReceive {//接收方

    public static void main(String[] args){
        System.out.println("老师上线了");
        //1.创建套接字:指定接收方的端口
        DatagramSocket ds = null;
        try {
            ds = new DatagramSocket(9999);
          while (true){
              //2.有一个空的数据包,打算用来接收   对方传过来的数据包:
              byte[] b = new byte[1024];
              DatagramPacket dp = new DatagramPacket(b,b.length);
              //接收对方的数据包,然后放入我们的dp数据包中填充
              ds.receive(dp);//接收完以后dp里面就填充好内容了

              //4.取出数据:
              byte[] data = dp.getData();
              String s = new String(data,0, dp.getLength());//dp.getLength()数组包中的有效长度
              System.out.println("学生对我说:"+s);
              if(s.equals("再见")){
                  System.out.println("学生下线了,老师也下线了");
                  break;
              }

              //老师进行回复:
              Scanner sc = new Scanner(System.in);
              System.out.print("老师:");
              String str = sc.next();
              byte[] bytes = str.getBytes();
              //封装数据,并且指定学生的ip和端口号
              DatagramPacket dp2 = new DatagramPacket(bytes,bytes.length, InetAddress.getByName("localhost"),8888);
              //发送:
              ds.send(dp2);

          }
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //5.关闭资源:
            ds.close();
        }
    }
}

标签:UDP,题目,String,System,聊天,new,ds,dp,out
From: https://www.cnblogs.com/gaoxiaocuo/p/16712630.html

相关文章