当前位置: 首页 > article >正文

UDP Socket聊天室(Java)

 UDP聊天室:循环的发送字

通过while循环,文字一直可以发送

dp.getData()是获取DatagramPacket中存储的数据的字节数组。

发送端:
package TseUDP;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Scanner;

public class LoginCelint {
    //客户端
    public static void main(String[] args) {
        System.out.println("我是客户端---------------");
        //发送信息
        Scanner scanner = new Scanner(System.in);
        DatagramPacket dp = null;
        DatagramSocket ds = null;

        try {

            while (true){
                System.out.print("客户端请输入:");
                String msg = scanner.nextLine();
                dp = new DatagramPacket(msg.getBytes(),
                        msg.getBytes().length,
                        InetAddress.getByName("127.0.0.1"),
                        8888);

                ds = new DatagramSocket();
                ds.send(dp);

                //接收
                byte b[] = new byte[100];
                dp = new DatagramPacket(b,b.length);
                ds.receive(dp);
                String content = new String(dp.getData());
                System.out.println("服务器说"+content);


            }

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            ds.close();

        }
    }
}
接收端:
package TseUDP;

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

public class LoginServer {
    //服务器
    public static void main(String[] args) {
        System.out.println("我是服务端——————————");
        Scanner scanner = new Scanner(System.in);
        DatagramPacket dp = null;
        DatagramSocket ds = null;
        try {
            ds = new DatagramSocket(8888);

            while (true) {

                byte b[] = new byte[100];
                dp = new DatagramPacket(b, b.length);

                //等待接收
                ds.receive(dp);
                //拆包
                String msg = new String(dp.getData());
                System.out.println("客户端对我说:" + msg);

                //发送
                System.out.print("服务器请输入:");

                String content = scanner.next();
                //发送地址:获得上个数据包的发送地址
                SocketAddress sa = dp.getSocketAddress();
                dp = new DatagramPacket(content.getBytes(),
                        content.getBytes().length,
                        sa);
                ds.send(dp);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            ds.close();
        }
    }
}


http://www.kler.cn/news/317533.html

相关文章:

  • Leetcode—329. 矩阵中的最长递增路径【困难】
  • dbt snapshot命令及应用示例
  • 基于BeagleBone Black的网页LED控制功能(Flask+gpiod)
  • 【CSS】字体文本
  • SQL_UNION
  • 【Linux】系统字符集无法修改,单独修改vim后的文件字符集
  • 爬虫技术初步自学
  • FreeRTOS学习——Systick中断、SVC中断、PendSV中断
  • 反转字符串 II--力扣541
  • k8s介绍-搭建k8s
  • Redis数据结构之哈希表
  • 【QT】QSS基础
  • Qt-qmake语言
  • 【网络基础知识】详解TCP/IP协议栈
  • golang调用163邮箱发送邮件
  • Spring Data Rest 远程命令执⾏命令(CVE-2017-8046) 靶场攻略
  • phpword读取word docx文档文本及图片转html格式
  • ElasticSearch分页查询性能及封装实现
  • 为什么推荐使用英文版LabVIEW
  • linux-网络管理-网络配置
  • 直播美颜工具的开发详解:基于视频美颜SDK的解决方案
  • java项目之基于springboot的医院资源管理系统源码
  • 【Linux 从基础到进阶】 Xen 虚拟化技术应用
  • 【实践功能7】前端实现截屏
  • Leetcode算法基础篇-递归算法
  • Spring事务类型及传播行为实战指南
  • JEDEC DDR4 SRAM standard
  • go 读取excel数据存储到mysql
  • 案例研究丨国控星鲨利用DataEase释放数据潜能,重塑业务视野
  • 从底层原理上解释 ClickHouse 的索引