UDP实现多人聊天室
发布日期:2021-10-12 20:08:33 浏览次数:5 分类:技术文章

本文共 4194 字,大约阅读时间需要 13 分钟。

概述

1.先运行接收方,避免收不到一开始的数据造成数据丢失

2.端口不能是-1, 数值在1-65535之间的任意一个整数,一般会选大于1024的,小于1024的一般被本地计算机程序占用。

1.接收方Receiver

package d03_chat;import java.net.DatagramPacket;import java.net.DatagramSocket;/** * zt * 2020/8/11 * 10:13 * 接收方 * * System.out.println(dp.getAddress().getHostAddress()+":"+data); * getAddress方法和getHostAddress类似,它们的唯一区别是getHostAddress方法返回的是字符串形式的IP地址,而getAddress方法返回的是byte数组形式的IP地址。 */public class ChatReceiver {    public static void main(String[] args) {        DatagramSocket ds = null;        System.out.println("聊天室已经启动......");        try {            //1.创建一个socket            ds = new DatagramSocket(8899);            //2.创建一个数据报包 <64K            byte[] buf = new byte[1024 * 20];            DatagramPacket dp = new DatagramPacket(buf, buf.length);            //3.接收            while (true) {                ds.receive(dp);                //4.处理数据                String data = new String(dp.getData(), 0, dp.getLength());                System.out.println(dp.getAddress().getHostAddress()+":"+data);            }        } catch (Exception e) {            e.printStackTrace();        } finally {            ds.close();        }    }}

2.发送方Sender

package d03_chat;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.util.Scanner;/** * zt * 2020/8/11 * 10:17 * 发送方 */public class ChatSender {    public static void main(String[] args)  {        DatagramSocket ds=null;        try {            //1.创建            ds = new DatagramSocket();            //2.发送包            Scanner sc = new Scanner(System.in);            while (true){                String data = sc.next();                DatagramPacket dp = new DatagramPacket(data.getBytes(),data.getBytes().length, InetAddress.getByName("10.0.139.255"),8899);                ds.send(dp);            }        } catch (Exception e) {            e.printStackTrace();        }finally {            ds.close();        }    }}

3.运行结果(这里我把接收方的:。。。删除了)所以接收到的IP带/

String data = new String(dp.getData(), 0, dp.getLength());System.out.println(dp.getAddress().getHostAddress()+":"+data);)

中的getHostAddress()删除了,测试一下getAddress()与getHostAddress()区别:

getAddress方法和getHostAddress类似,它们的唯一区别是getHostAddress方法返回的是字符串形式的IP地址,而getAddress方法返回的是byte数组形式的IP地址。

要想ip前面不带/,写dp.getAddress().getHostAddress()就好

ChatReceiver

聊天室已经启动....../10.0.139.3:到不锋利马太瘦,你拿什么和我斗/10.0.139.248:886/10.0.139.160:呱?/10.0.139.103:你蛋回头 必有理由/10.0.139.103:要么反杀 要么报仇/10.0.139.97:12/10.0.139.215:∑/10.0.139.97:89/10.0.139.3:花花世界迷人眼/10.0.139.174:�/10.0.139.195:1234/10.0.139.97:】【/10.0.139.195:1111/10.0.139.3:铁汁/10.0.139.195:1/10.0.139.174:�/10.0.139.174:来/10.0.139.174:gan/10.0.139.174:886/10.0.139.103:苟/10.0.139.103:利/10.0.139.3:bye/10.0.139.103:国/10.0.139.103:家/10.0.139.103:生/10.0.139.35:人生苦短/10.0.139.103:死/10.0.139.165:niahao/10.0.139.103:矣/10.0.139.179:你***,我****,真是***狗了/10.0.139.103:人生苦短 必须性感/10.0.139.44:lll/10.0.139.5:1213231/10.0.139.5:shaoshao/10.0.139.134:45132465131321515/10.0.139.134:5/10.0.139.134:5/10.0.139.134:45/10.0.139.134:15/10.0.139.134:5/10.0.139.134:5/10.0.139.134:515/10.0.139.134:4/10.0.139.134:515/10.0.139.134:65/10.0.139.134:151/10.0.139.213:wofule/10.0.139.103:我**你个**** *****你*我****/10.0.139.103:出口成章/10.0.139.141:haloua/10.0.139.103:/10.0.139.180:123/10.0.139.35:我铸玺不服/10.0.139.180:321/10.0.139.103:这里各个都是人才 说话又好听/10.0.139.3:张口就来?/10.0.139.103:我超喜欢在这里的感觉/10.0.139.218:****/10.0.139.35:宗哥在此/10.0.139.140:*****/10.0.139.218:开局一条鲲进阶全靠吞/10.0.139.103:哈哈哈哈哈  你************/10.0.139.141:我郝海荣最棒/10.0.139.179:老夫聊发少年狂,治肾亏,不含糖,三百年,九芝堂/10.0.139.180:你艾希我奶妈/10.0.139.103:爱/10.0.139.174:�/10.0.139.179:你看我牛*吗/10.0.139.3:圆圆是我的/10.0.139.213:少�/10.0.139.35:你看我还有机会吗/10.0.139.103:兄弟你细嗦/10.0.139.180:我赵日天第一个不服/10.0.139.174:�/10.0.139.5:祖安王者在此/10.0.139.103:《》安/10.0.139.3:无机会/10.0.139.35:黄铭你过来呀/10.0.139.140:重金求子/10.0.139.32:123/10.0.139.103:《先穿裤子后穿鞋 先当孙子后当爷/10.0.139.32:123446/10.0.139.165:yiqungsharena/10.0.139.103:三十年河东三十年河西/10.0.139.168:http:***.com/10.0.139.103:你河东山花遍野你笑我河西便也空空/10.0.139.165:疯了/10.0.139.213:�/10.0.139.103:带到春去入冬/10.0.139.140:重金求子/10.0.139.140:加V:1186040304/10.0.139.103:你河东山花早已埋入雪中/10.0.139.134:�������������������������������������������������������������/10.0.139.103:再看我河西 满山轻松

ChatSender

呱?

转载地址:https://blog.csdn.net/qq_39773004/article/details/107929965 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:使用NIO实现非阻塞式(相对的)多人聊天室
下一篇:java使用TCP,由客户端向服务端传输图片,(电脑与电脑)或(同一台电脑)

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月15日 18时25分35秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章