社区
C++ Builder
帖子详情
请教:如何使用NMUDP控件实现UDP广播效果?
yxtk
2001-02-10 01:12:00
哪位知道如何使用NMUDP控件实现UDP广播效果?
依稀记得是把接收IP设成一个特殊的地址就可以了,但不记得具体是什么了.
...全文
344
4
打赏
收藏
请教:如何使用NMUDP控件实现UDP广播效果?
哪位知道如何使用NMUDP控件实现UDP广播效果? 依稀记得是把接收IP设成一个特殊的地址就可以了,但不记得具体是什么了.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yxtk
2001-02-11
打赏
举报
回复
谢谢各位,经过各位提醒,我发现可以这样实现:
如果我的IP为168.192.0.1子网掩码:255.255.255.0
那么把NMUDP中接受地址设为168.192.255.255就可以实现在子网内广播
TangSe
2001-02-11
打赏
举报
回复
设成255.255.255.255不行!!!系统返回“找不到该地址”。
NowCan
2001-02-11
打赏
举报
回复
设成255.255.255.255好像不行。
yousoft2013
2001-02-10
打赏
举报
回复
将IP设置为255.255.255.255试试!理论上是这样的,我没有条件测试!
这有篇文章:你可以看看!
利用特殊IP地址实现网络广播
我们在编制网络应用程序时,经常需要将一份消息同时发送给网络上的所有用户,这叫做消息的广播。网络消息的广播技术在编制多媒体网上演示、网络会议等程序时有重要的意义。
一、技术要点分析
本文所介绍的网络技术是利用IP协议中的特殊地址实现的。IP协议是建立TCP/IP网络的最基本协议,它定义了在整个TCP/IP网络上传输数据所用的基本单元。
在使用TCP/IP协议的网络环境中,一台计算机有一个主机地址,同时,一个网络也被分配了一个网络地址(见表1)。
为了方便处理一些特殊的数据发送要求,IP协议中定义了一套自己保留的特殊IP地址,称为保留地址,保留的IP地址是从不分配给某台特定的主机的。
注:在IP地址中,可分成网络标识符及主机编号两部分。例如一个C类地址192.168.1.1,则它的网络标识符为192.168.1,主机编号为1。所有的保留IP地址只能当作源地址使用。
TCP/IP协议规定,主机编号各位全为“1”的网址用于广播之用,叫广播地址。网络标识符和主机编号的32比特位全为“1”的网址用于本网广播,该地址叫作有限广播地址(linited broadcast address)。主机在启动过程中,往往不知道本网的网址(即本网网络号),这时候,若想向本网广播,只能采用有限广播地址。在协议中规定,各位全为“0”的网址被解释成“本”网络。若主机试图在本网内通信,而又不知道本网网络号,可以利用该地址。
我们在利用保留IP地址进行网络广播时,将使用网络的直接广播地址。由于程序是基于IP协议编写的,因此编程时要使用Socket编程,而不使用WININET。
二、范例程序的实现与代码分析
我们利用Visulal C++ 的向导生成一个基于对话框的程序,命名为NetBrocast。
利用ClassWizard为程序加入一个基类为CAsyncSocket,并命名为CServerSocket的类。其源程序代码如下:
1.定义CServerSocket类的头文件
……
//省略机器生成的代码
class CServerSocket : public CAsyncSocket
{
……
//省略机器生成的代码
public:
//为了支持多用户,我们为每一个申请连接的客户端生成一个Socket
UINT OrderList; //连接后的Socket序列号
CServerSocket SendSocket[255];
//连接后的Socket数组
//{{AFX_VIRTUAL(CServerSocket)
public:
virtual void OnAccept(int nErrorCode);
//重载它的响应连接函数
//}}AFX_VIRTUAL
};
2.编写CServerSocket类的实现文件
……
//省略的机器生成代码
CServerSocket::CServerSocket()
{
//初始Socket序列号
OrderList=0;
}
……//省略的机器生成代码
void CServer::OnAccept(int nErrorCode)
//响应连接请求的消息函数
{
//接受客户端发出的连接请求,完成连接,实现一个可收发数据的Socket
SendSocket[OrderList]=NULL;
SendSocket[OrderList]=new CServerSocket();
//初始化一个新的Socket
this-〉Accept((SendSocket[OrderList]));
//生成一个新的连接后的Socket
OrderList++;
}
3.编写主对话框代码的头文件
……
//省略的机器生成代码
class CServerSocket;
class CNetBrocastDlg : public CDialog
{
public:
CServerSocket ServerSocket;
……
//省略的机器生成代码
//{{AFX_DATA(CNetBrocastDlg)
enum { IDD = IDD_NETBROCAST_DIALOG };
CEdit m_SendMessge;
//装载要发送的信息的编辑框
//}}AFX_DATA
……
//省略的机器生成代码
//{{AFX_MSG(CNetBrocastDlg)
virtual BOOL OnInitDialog(); //响应初始化
……
//省略的机器生成代码
afx_msg void OnSend(); //响应按钮"Send"的操作
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
4.编写主对话框代码的实现文件
#include "serverSocket.h"
……
//省略的机器生成代码
BOOL CNetBrocastDlg::OnInitDialog()
{
……
//省略的机器生成代码
ServerSocket=new CServerSocket();
//生成一个ServerSocket类
ServerSocket-〉Create(1024,SOCK_STREAM);
//开始倾听连接
ServerSocket-〉Listen();
return TRUE; }
//下面的这个函数是按钮“Send”的响应函数,该函数将向网络上所有主机广播消息
void CNetBrocastDlg::OnSend()
{
CString String;
m_SendMessge.GetWindowText(String);
//下面这行代码将向C类地址中的网络标识为“192.168.0”的网络进行广播
ServerSocket-〉SendSocket[0]-〉SendTo(String,String.GetLength(),
1024,"192.168.0.255",0);
}
//下面的函数响应按钮“Quit”的单击操作,退出程序
void CNetBrocastDlg::OnOK()
{
ServerSocket-〉Close();
//关闭Socket
CDialog::OnOK();
}
编译完成后,得到网络广播的服务器端的演示程序(如图1)。它将会把填在编辑框中的消息在网络中广播出去。
图1
以上程序在VC++6.0、Windows 98上编译通过,运行正常。
表1 保留IP地址格式 示例 说明
网络标识符为0 . 主机编号为0 000.000.000.000 本地网络上的本主机
网络标识符为0 . 主机编号为1 000.000.000.1 本地网络上的特定编号的主机
. 主机编号为0 192.168.0.0 网络的伯克利广播
网络标识符全1 . 主机编号全1 255.255.255.255 本地网的有限广播
. 主机编号全1 192.168.0.255 网络的直接广播
网络标识符为127 . 主机编号任意 127.0.0.1 本地环路
delphi
NM
UDP
控件
3. **
广播
与多播**:
NM
UDP
控件
不仅支持一对一的
UDP
通信,还支持
广播
和多播,这对于需要向多个设备同时发送数据的应用场景非常有用。 4. **错误处理和可靠性**:尽管
UDP
是无连接的,但
NM
UDP
控件
提供了一些机制来增强...
bcb
UDP
传文件(
使用
T
NM
UDP
控件
)
总结,
使用
Borland C++ Builder和T
NM
UDP
控件
进行
UDP
文件传输,需要设计并
实现
一套可靠的重发机制,包括数据分块、序列号管理、确认机制以及超时重传等策略。尽管
UDP
本身不保证数据的可靠性,但我们可以通过这些技术...
udp
.rar_C Builder_
NM
UDP
.pas_c++ BUILDER
udp
_c++builder
UDP
_
udp
6. **多播(Multicast)**:
UDP
支持多播,允许数据包一次性发送到多个接收者,这对于
广播
或组播通信非常有用。 7. **错误处理**:
UDP
编程中需要处理各种可能的错误,如网络中断、数据包丢失等。C++ Builder提供了...
Delphi平台
NM
UDP
实现
的屏幕截图传输
总的来说,Delphi平台结合
NM
UDP
库
实现
的屏幕截图传输,利用了
UDP
的高速传输特性和
NM
UDP
的异步事件驱动模型,能够有效地
实现
实时的屏幕分享功能。在开发过程中,需要注意性能优化,如图片压缩和错误处理,以提供稳定...
用
UDP
传送文件的程序
标题中的“用
UDP
传送文件的程序”涉及到的是网络编程领域的一个常见任务,即利用用户数据报协议(User Datagram Protocol,
UDP
)进行文件...通过研究源代码,可以深入理解
UDP
文件传输的
实现
细节和
NM
UDP
控件
的
使用
方法。
C++ Builder
13,873
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章