UDP通信程序——单播——聊天室——如何修改控制文件

DevC++环境下的C语言UDP网络编程入门与实践指南 网络编程是计算机通信的基石,其核心在于理解数据如何在网络节点间传输。UDP(用户数据报协议)作为一种无连接、不可靠但高效的传输层协议,其原理在于将数据封装成独立的数据报进行发送,无需建立和维护连接状态。这一特性赋予了UDP低延迟、开销小的技术价值,使其在实时音视频流、DNS查询、在线游戏等对延迟敏感的应用场景中不可或缺。对于初学者而言,从UDP入手学习网络编程,能快速聚焦于数据包收发这一核心过程,直观理解**套接字(Socket)** 和**网络字节序**等基础概念。本文以DevC++为开发环境,详细演示了 阅读详情

一、单播——聊天室(群聊)——>多个人一起发消息,只有一个容器接收

二、注意:要先开启接收数据,再开启发送数据

三、代码

ReceiveMessageDemo.java
package com.itheima.a03udpdemo2;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

public class ReceiveMessageDemo {
    public static void main(String[] args) throws IOException {
        //接收过程:快递公司  根据地址过来——>签收包裹——>拆开包裹得到里面的数据——>快递公司离开

        //1.创建DatagramSocket对象(快递公司)
        //参数为程序的端口号
        DatagramSocket ds = new DatagramSocket(10086);

        //2.接收数据
        byte[] bytes = new byte[1024];

        while (true) {
            DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
            ds.receive(dp);

            //3.解析数据
            byte[] date = dp.getData();//获取数据所在的数组
            int len = dp.getLength();//数据所占的长度
            //获取真正的 IP:
            String ip = dp.getAddress().getHostAddress();//发送端的电脑IP地址
            //获取主机名
            String name = dp.getAddress().getHostAddress();
            int port = dp.getPort();//端口号

            //获取数据转换成字符串
            System.out.println("ip为:" +ip + ",主机名为:"+name+"的人,发送了数据:"+new String(date,0,len));


        }
        //不知道发送端什么时候停止,不需要释放数据,直到不需要接收数据,直接停止程序就好
        /*//4.释放资源
        ds.close();*/
    }
}
SendMessageDemo.java
package com.itheima.a03udpdemo2;


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

public class SendMessageDemo {
    public static void main(String[] args) throws IOException {
        //单播:(多对一)
        //发送过程:指定快递公司——>将东西打包装箱——>将快递派送——>快递公司离开
        //广播:广播和单播实现过程一致,只是将接收端的电脑IP改为 255.255.255.255就可以

        //需求:
        //可以同时运行多个发送端程序,将接收端当作聊天室,几个人一起聊天
        /*按照下面的要求实现程序
        UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束
        UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收*/

        //分析:
        //1.创建DatagramSocket对象
        DatagramSocket ds = new DatagramSocket();

        //2.将数据打包
        Scanner sc = new Scanner(System.in);

        while (true) {
            System.out.println("请输入要说的话:");
            String str = sc.nextLine();
            if("886".equals(str)){
                break;
            }
            byte [] bytes = str.getBytes();
            //确定接收端的电脑IP
            //单播
            InetAddress address = InetAddress.getByName("127.0.0.1");
            //广播
            //InetAddress address = InetAddress.getByName("255.255.255.255");
            //要经过的端口号
            int port = 10086;
            //开始传递
            DatagramPacket dp = new DatagramPacket(bytes,bytes.length,address,port);

            //3.发送数据
            ds.send(dp);

        }
        //4.释放资源
        ds.close();

    }
}

四、应用场景——聊天室配置

       1.先创建接收数据和发送数据的java文件

        2.在发送文件中进行配置

        3.开始配置:先点击配置选项进入下一步

        4.选择允许多个实例

        5.应用+确定

         6.这样就得到一个聊天室了

Qt —— 网络通信之UDP,单播、广播、组播协议含代码完整介绍(附:源码) 单播           单播用于两个主机之间的端对端通信。通常我们讨论的udp的程序都是一对一的单播程序。           注意:发送到对方的地址端口时,对方必须已经绑定,否则发送失败。 // 初始化 QHostAddress groupAddress1 = QHostAddress("192.168.1.xx"); // 地址 int port1 = 7755; // 端口 QHostAddress groupAddress2 = QHostAddress("192.16 阅读详情

相关推荐

UDP单播发送与接收.c

UDP单播,发送与接收(代码)详细介绍。单播流程:主机A向主机B发送UDP数据报,发送的目的IP为192.168.1.151,端口为 80,此数据经过UDP层、IP层,到达数据链路层,数据在整个以太网上传播。

网络编程(三)—— UDP(单播、广播、组播)

UDP协议的特点:无连接 、不保证传输可靠(可能重复到达、失序、丢失、无字节流控制(数据传输快的会淹没慢的))UDP传输UDP 服务端(接收端)的搭建流程UDP客户端(发送端)的搭建流程sendto 和 recvfrom这两个函数一般在使用UDP协议时使用sendto服务器端客户端。

qq_59566583的博客 4258

避坑指南:Win10安装Docker Desktop时Hyper-V报错的7种解决方案(2024最新版)

本文提供了2024年最新、最全面的Windows 10系统下Docker Desktop安装时Hyper-V报错的解决方案指南。文章深入剖析了Hyper-V与Docker的共生关系,并系统性地给出了从BIOS/UEFI设置、Windows功能启用、bcdedit命令修复到处理多虚拟化环境共存等7种核心解决方案,帮助开发者彻底解决安装困局,顺利部署容器化开发环境。

weixin_28840143的博客 529

基于 UDP 协议的一个简单的控制台通讯程序

在编程前要加入一个链接库ws2_32.lib VC2017的操作步骤: 在解决方案的窗口中对项目点右键或者点击菜单栏中的项目 选择属性 - 连接器 - 输入 - 附加依赖性中添加ws2_32.lib,注意每一项要用 ; 来分隔 服务器端: 1、创建一个套接字(socket) 2、将套接字绑定到一个地址上(bind) 因此这一步之前要创建一个SOCKADDR_IN类型的结构体来存储地址...

qq_43355494的博客 628

【白话系列】倍增算法

【序言】         我认为吧,所有能够优化复杂度的算法都是神奇的,所有能够化繁琐为形象的文字都是伟大的。一直觉得倍增算法是个很神奇的东西,所以决定写点东西纪念一下它。但是作为一个非常不称职的OIER,我非常讨厌在看别人的算法解析时整版的i,j,k等我看到鼠标就惯性移到右上角的符号语言,所以我想用最形象的方式来纪念它。 【一】         从前,有一只可爱得不得了的小白兔,它想从

JarjingX 3万+

QQ的TEA填充算法C#实现 By Red_angelX

注:本人只是从LUMA QQ的 Source Code里面把相应Java语言翻译成C#,纯技术研究,并没有对TC产品做任何逆向分析,不承担任何法律责任!转载请保持本文完整性网上有c/c++,vb,delphi,java,perl各种版本的tea填充算法,唯独没有C#的,这让我这种狂热喜爱C#的人如何承受,于是,花3天时间看了各种代码经历无数失败的挫折终于用C#完成了该填充算法,废话不多说,直接

Red_angelX的专栏 1万+

【Qt专栏】Qt实现UDP单播通信

网络通信是程序员必须会的一项生存技能,这里简单的实现了UDP单播通信的一个小实例,代码可以直接拿来用,开发环境是Qt5.9.6。原理后序会专门写篇文章,这里可以直接照着上述写就OK啦,886!

weixin_43729127的博客 1653

Fluent新手必看:如何正确解读scaled residuals曲线(附常见问题排查)

本文详细解析了Fluent中scaled residuals曲线的解读方法及常见问题排查技巧。针对continuity残差居高不下、湍流模型收敛困难等典型问题,提供了网格质量检查、边界条件验证和求解策略调整的实用解决方案,帮助CFD新手快速掌握计算收敛性的关键判断标准。

weixin_28698059的博客 376

C#实现UDP的单播、广播和多播

一、UDP 的单播、广播、组播 1、含义 (1)单播:用于两个主机之间端对端的通信。即一对一 (2)广播:用于一个主机对整个局域网上所有主机通信。即一对所有 (3)组播(多播):对一组特定的主机进行通信,而不是整个局域网上的所有主机。即一对一组   将网络中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数据仅仅在同一分组中进行,其他的主机没有加入此分组不能收发对应的数据。 组...

灰太狼的小秘密 2万+

网络可视化工具netron详细安装流程

netron安装目录1.netron 简介2.不同操作系统下的安装使用方式2.1 在线版本:只要有浏览器就可以2.2 不同操作系统安装使用3.netron支持的网络框架4.netron测试演示 1.netron 简介 在实际的项目中,经过会遇到各种网络模型,需要我们快速去了解网络结构。如果单纯的去看模型文件,脑海中很难直观的浮现网络的架构。 这时,就可以使用netron可视化工具,可以清晰的看到每一层的输入输出,网络总体的架构,而且支持各种不同网络框架,简单好用。 2.不同操作系统下的安装使用方式 2.1

江南研习社 12万+

解决Office 365 SMTP问题:C#邮件发送详解

本文介绍了如何在C#中使用Office 365 SMTP服务发送邮件。重点讲解了正确配置SMTP客户端的关键参数:必须使用587端口并启用TLS加密(EnableSsl=true),同时通过NetworkCredential进行身份验证。虽然SmtpClient已不推荐用于新项目,但本文提供的代码示例仍适用于临时项目或系统维护,并建议未来可考虑使用MailKit等现代邮件库。文章还包含了错误处理机制,确保程序健壮性。

2501_90323865的博客 141

【计算机网络】套接字编程(套接字API/UDP和TCP服务器/网络相关指令)

本文介绍了网络编程中的端口号、TCP/UDP协议、网络字节序及套接字编程等内容。端口号用于标识进程,TCP是面向连接的可靠协议,UDP是无连接的快速协议。套接字编程涉及创建socket、填充sockaddr结构、绑定socket等步骤,并详细说明了UDP和TCP专用的API函数。此外,文章还介绍了netstat和telnet指令的使用方法,以及回环地址的特殊性。最后,通过示例代码展示了如何实现UDP和TCP服务器与客户端的功能。

wefg1的博客 683

ruoyi-nbcio基于ruoyi的flowable前端支持自定义表单组件的自动获取方法

ruoyi-nbcio基于ruoyi的flowable前端支持自定义表单组件的自动获取方法

宁波阿成的博客 607

Java最高频八股文速通

final 类:String 类被声明为 final,这意味着它不能被继承,从而防止了通过继承改变其行为。final 字段:String 类中的 value 字段是 final 的,这保证了 String 对象在创建后其内部字符数组不会被改变。没有提供修改方法:String 类没有提供任何可以修改其内容的方法。所有对 String 的操作(如拼接、替换等)都会生成一个新的String 对象。

qq_43751506的博客 6395

基于巴法云物联网云平台构建可视化控制网页(以控制LED为例)

本文基于巴法云物联网云平台构建可视化控制网页,实现了对LED的控制。

kevin1499的博客 4518

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Windows下UDP单播与广播编程

WHUDP.h//头文件 #pragma once #include <WinSock2.h> class WHUDP { public: WHUDP(void); ~WHUDP(void); void ServerInit(int port); void SendData(int port); void SendData(int port, const char *str...

浮生流年的博客 2162

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

UDP 单播

1. Linux 服务端 #include &amp;amp;lt;stdio.h&amp;amp;gt; #include &amp;amp;lt;stdlib.h&amp;amp;gt; #include &amp;amp;lt;stdbool.h&amp;amp;gt; #include &amp;amp;lt;string.h&amp;amp;gt; #include &amp;amp;lt;errno.h&amp;a

派大海星的博客 2580

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

UDP单播

Java实现UDP单播对于最近所做的Android手机端遥控器APP,用到了UDP组播和广播方面的知识,虽然网络传输方面并不是由我负责,但是由于期间遇到一些问题,所以我的求知欲有蠢蠢欲动,自己就去了解了一下这方面的知识,首先从UDP单播开始给大家分享一下我在学习过程中的感悟。对于UDP的概念在这里就不多做介绍了。参考链接http://blog.youkuaiyun.com/ljheee/article/deta

LeDaVince的博客 1928

UDP 单播、广播和多播

使用UDP协议进行信息的传输之前不需要建议连接。换句话说就是客户端向服务器发送信息,客户端只需要给出服务器的ip地址和端口号,然后将信息封装到一个待发送的报文中并且发送出去。至于服务器端是否存在,或者能否收到该报文,客户端根本不用管。 单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端,要么对一个主机进行通信,...

weixin_30568715的博客 1358

UDP单播、多播详解(搭配代码)

单播发送与接收 1.创建套接字。 socketfd_udp_single = socket(AF_INET, SOCK_DGRAM, 0); 2.定义struct sockaddr_in Local_addr变量,存放本地IP以及端口号。 struct sockaddr_in Host_addr; //存放服务端IP信息 struct sockaddr_in Local_add...

TJW729024716博客 3624

Linux网络编程:UDP单播、广播和多播

  使用UDP协议进行信息的传输之前不需要建立连接。换句话说就是客户端向服务器发送信息,客户端只需要给出服务器的ip地址和端口号,然后将信息封装到一个待发送的报文中并且发送出去。至于服务器端是否存在,或者能否收到该报文,客户端根本不用管。   单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信。 单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信。实际情况下,经常需要对一组特定的主机进行通信,而不是整个局域网上的所有主机,这就是多播的用途。   

weixin_44498318的博客 1557

Linux C编程 socket—Udp单播

Linux C编程 socket—Udp单播Udp简介概述特点Udp单播编程(服务器和客户端基本无差别)函数介绍Udp服务器示例Udp客户端示例 Udp简介 概述 UDP 是 User Datagram Protocol 的简称, 中文名是用户数据报协议,是一个简单的面向数据报的运输层协议,在网络中用于处理数据包,是一种无连接的协议。 UDP 不提供可靠性的传输,它只是把应用程序传给 IP 层的...

weixin_43790540的博客 2207

四路 CAN 转 4G 网关

SG‑CAN‑4G‑410 为**四路隔离 CAN 转 4G 工业网关**,把 CAN2.0A/B 报文封装成 TCP/UDP 报文,通过 4G 无线网络实现 CAN 总线远程监控、远程控制。四路 CAN 相互独立;以太网仅用于本地配置,不做业务数据传输;支持移动 / 联通 / 电信 4G 网络。

S2003120416的博客 159
上一篇: HTML——Vue框架
下一篇: 网络编程三要素——IP、端口号、协议
new2MySQL
博客等级 码龄5年 255粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值