我用c# 编写udp广播发送,如何得到接收设备的信息,比如IP,MAC等 10C

我用c# 编写udp广播发送,如何得到响应设备的信息,比如IP,MAC等

3个回答

得到局域网网段,可由自己机器的IP来确定,根据IP类型,一次遍历局域网内IP地址

一:肯定是不能用tcp的,因为这个是属于一种不确定因素(谁知道有哪些会接收到广播信息呢?)
二:如果是我做这个功能,以下描述:发出广播的机子(以下简称第一台机子),接收的机子(全部简称第二台),我会在第二台写一个udp的小程序,用第一台给第二台发,内容中包含IP地址,第二台接收到信息,将一段响应的内容发送到这个IP上

改成 tcp 连接就可以了吧。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何接收UDP广播信息
各位牛人,vb.net中,rnUDPClient.JoinMulticastGroup(IPAddress.Parse("192.168.1.102"))有什么错误吗?怎么运行到这的时候,就提示:提供了一个无效的参数,怎么回事?谢谢
Android发送和接收UDP广播
在Android平台上实现UDP广播的发送和接收
udp的广播发送和接收怎么做?
linux下udp的广播发送和接收怎么做?rnlinux新手求教
android 广播发送接收UDP
1、用来测试Android手机为啥接收不到UDP广播报文。
UDP广播包发送接收
C++socket网络编程大全实战http服务器(支持php)视频培训教程概况:本课程会同时演示在linux和windows中的编程,课程中的线程和正则表达式都使用c++提供库。本课程包含了socket网络编程常用的所有特性,包括tcp、udp协议的基础编程,广播包,超时连接,多路复用,高并发的epoll多路复用,多线程的服务端。课程讲解理论与实践相结合,实践以代码延时讲解为主。
如何实现UDP广播发送/接收(发送后立即接收)?
使用UDP协议,广播发送到所有地址,rnrn发送后,立即开始接收反馈地址!
如何发送和接收UDP的广播消息?
我按照网友的例子,接收端收不到任何消息,大家看看是什么问题啊,rn发送端:rn#include "stdafx.h"rn#include rn#include rnrn#pragma comment(lib,"ws2_32.lib")rnrnint _tmain(int argc, _TCHAR* argv[])rnrn WSADATA wsaData; //指向WinSocket信息结构的指针rn SOCKET hSocket; //创建套接字rn SOCKADDR_IN saUdpServ; //指向通信对象的结构体指针 rn BOOL fBroadcast = TRUE; //用于setsockopt(),表示允许rn char sendBuff[800]; //缓冲区存放发送的数据rn int ncount=0; //用于显示消息数目rn //*************************** 第一步初始化Winsock *****************************//rn if(WSAStartup(MAKEWORD( 1, 1 ), &wsaData )!=0) //进行WinSocket的初始化rn rn printf("Can't initiates windows socket!Program stop.\n");//初始化失败返回-1rn return -1;rn rn //******************** 第二步建立一个数据报类型的UDP套接字 ******************//rn hSocket=socket(PF_INET,SOCK_DGRAM,0); rnrn // setsockopt函数用于设置套接口选项rn // 采用广播形式须将第三个参数设置为SO_BROADCASTrn setsockopt ( hSocket,SOL_SOCKET,SO_BROADCAST, (CHAR *)&fBroadcast, sizeof (BOOL) );rnrn /*rn SOCKADDR_IN addrUDP = 0 ;rn addrUDP.sin_family = AF_INET;rn addrUDP.sin_port = htons(0);rn addrUDP.sin_addr.s_addr = htonl(INADDR_ANY);rnrn if (bind(sockListener, (SOCKADDR *) &addrUDP, sizeof(addrUDP)) != 0) rn rn return -1;rn rn */rn // 参数设置,注意要将IP地址设为INADDR_BROADCAST,表示发送广播UDP数据报rn saUdpServ.sin_family = AF_INET;rn saUdpServ.sin_addr.s_addr = inet_addr("255.255.255.255"); //htonl ( INADDR_BROADCAST );rn saUdpServ.sin_port = htons (7001); //发送用的端口,可以根据需要更改rnrn while(1) //循环发送数据rn rn sprintf(sendBuff,"Send:message%d",ncount++); //将ncount的值放入字符串senBuff中rn //********************** 第三步使用sendto函数进行通信 *************************// rn int ret = sendto ( hSocket, sendBuff, strlen (sendBuff), 0, (SOCKADDR *) &saUdpServ, sizeof ( SOCKADDR_IN ));rn printf("%s[ret=%d]\n",sendBuff,ret); //将要广播的数据串输出rn Sleep(1000);rn rn //********************* 第四步关闭socket ***************************************//rn closesocket(hSocket); //关闭监听socketrn WSACleanup();rnrn return 0;rnrnrnrnrn接收端:rn// UdpRecver.cpp : 定义控制台应用程序的入口点。rn//rnrn#include "stdafx.h"rn#include rn#includern#include rnrn#pragma comment(lib,"ws2_32.lib") rnrnint _tmain(int argc, _TCHAR* argv[])rnrn WSADATA wsaData; //指向WinSocket信息结构的指针rn SOCKET hSocket;rn SOCKADDR_IN sin,saClient; //设置两个地址,sin用来绑定rn BOOL fBroadcast = TRUE; rn //saClient用来从广播地址接收消息rn char cRecvBuff[800]; //定义接收缓冲区rn int nSize,nbSize;rn int iAddrLen=sizeof(saClient);rnrn if(WSAStartup(MAKEWORD( 1, 1 ), &wsaData )!=0) //进行WinSocket的初始化rn rn printf("Can't initiates windows socket!Program stop.\n");//初始化失败返回-1rn return -1;rn rnrn hSocket = socket(AF_INET, SOCK_DGRAM,0);rnrn setsockopt ( hSocket,SOL_SOCKET,SO_BROADCAST, (CHAR *)&fBroadcast, sizeof (BOOL) );rn //int nTimeout = 1000; // 设置超时一秒rn //setsockopt(sockListener, SOL_SOCKET, SO_RCVTIMEO, (char *) &nTimeout, sizeof(nTimeout));rn rn sin.sin_family = AF_INET;rn sin.sin_port = htons(7001); //发送端使用的发送端口,可以根据需要更改rn sin.sin_addr.s_addr = htonl(INADDR_ANY);rnrn if(bind( hSocket, (SOCKADDR FAR *)&sin, sizeof(sin))!=0)rn rn printf("Can't bind socket to local port!Program stop.\n");//初始化失败返回-1rn return -1;rn rn while(1)rn rn nSize = sizeof ( SOCKADDR_IN );rn if((nbSize=recvfrom (hSocket,cRecvBuff,800,0,rn (SOCKADDR FAR *) &saClient,&nSize))==SOCKET_ERROR) //若接收失败则提示错误rn rn printf("Recive Error\n");rn //break;rn rn elsern rn cRecvBuff[nbSize] = '\0'; //字符串终止rn printf("Recv:%s\n",cRecvBuff); //显示所接收到的字符串rn rn rnrnrn return 0;rnrnrn
UDP广播搜索局域网设备,返回mac地
udp发送广播并接受数据流程基本都是通用的 1.发送数据: (1)新建一个DatagramSocket对象 DatagramSocket udpSocket = new DatagramSocket(); (2)将需要广播的数据转成byte形式 (3)新建一个DatagramPacket对象指定需要广播的端口和地址DatagramPacket dataPacket = new Datagr
UDP如何接收广播消息
在UDP正常通信中我的server和client都可以正常通信,可是在server广播消息时client接收不到广播消息而server可以接收到自己的广播消息!如何让client接收到UDP的广播消息?rn在测试过程中发现client如果bind了相应的广播端口的话可以正常接收广播消息!rn重要代码如下:rnserver:rn //Bind端口rnbool CUDPServer::BindPort(UNSHORT unBindPort)rnrn //设置绑定方式rn struct sockaddr_in ServerAddr;rn ServerAddr.sin_family=AF_INET;rn ServerAddr.sin_port=htons(unBindPort); ///监听端口rn ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY); ///本机rnrn m_Socket=socket(AF_INET,SOCK_DGRAM,0); rn BOOL bBroadcast=TRUE;rn setsockopt(m_Socket,SOL_SOCKET,SO_BROADCAST,(const char*)&bBroadcast,sizeof(BOOL));rn if(SOCKET_ERROR == bind(m_Socket,(struct sockaddr*)&ServerAddr,sizeof(ServerAddr)))rn rn return false;rn rn return true;rnrnrn//发送广播消息rnbool CUDPServer::BroadCase(char* szSend, DWORD dwSendSize)rnrn SOCKADDR_IN BroadcastAddr = m_ClientAddr; rn BroadcastAddr.sin_family = AF_INET; rn BroadcastAddr.sin_addr.s_addr = htonl(INADDR_BROADCAST); rn BroadcastAddr.sin_port = htons(8848); rn int nSiz = sizeof(SOCKADDR_IN); rn rn if(SOCKET_ERROR == sendto(m_Socket, szSend, dwSendSize,0,(struct sockaddr*)&BroadcastAddr, sizeof(BroadcastAddr)))rn rn return false;rn rn unsigned short* pUnBuff = (unsigned short* )szSend;rn cout<<"CUDPClient::BroadCase:"<
VB.net 发送和接收基于UDP的广播
VB.net 发送和接收基于UDP的广播,程序由发送端和接收端组成,各司其责,在发送端输入内容,点击“发送”后,接收端能收到信息,UDP的点对点消息发送程序,有兴趣的可下载参阅。程序运行于VS2005及更高版本的.net环境下。
UDP广播发送和接收的VC程序
UDP广播发送和接收的VC程序,包含注释,UDP广播也算是UDP传输的基础知识,本程序为本人自己编写,也经过调试。
UDP 发送和接收广播包的问题,急死了!
[b]小弟在同一台机器上跑如下的UDP广播包发送程序和接收程序,结果接收端怎么也收不到~[/b]rn如果将接收端放置另一台机器上,一切正常~ 请各位给出意见,谢谢!!!rnrn// 发送端:rn SOCKET sockClient = socket(AF_INET, SOCK_DGRAM, 0);rn if (sockClient == INVALID_SOCKET)rn rn return;rn rn rn BOOL yes = TRUE;rn int ret = setsockopt(sockClient, SOL_SOCKET, SO_BROADCAST, (char FAR *)&yes, sizeof(BOOL));rn if (ret == SOCKET_ERROR)rn rn return;rn rn rn SOCKADDR_IN addrSrv;rn addrSrv.sin_family = AF_INET;rn addrSrv.sin_port = htons(56789);rn addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_BROADCAST);rnrn char recvBuf[100];rn char sendBuf[100];rn rn int len = sizeof(SOCKADDR);rn while(1)rn rn gets(sendBuf);rn rn if (sendto(sockClient, sendBuf, strlen(sendBuf)+1, 0, (SOCKADDR*)&addrSrv, len) == SOCKET_ERROR)rn rn return;rn rn rnrn closesocket(sockClient);rn WSACleanup();rnrnrn// 接收端rn SOCKET sockSrv = socket(AF_INET, SOCK_DGRAM, 0);rn if (sockSrv == INVALID_SOCKET)rn rn return;rn rnrn BOOL yes = TRUE;rn int ret = setsockopt(sockSrv, SOL_SOCKET, SO_BROADCAST, (char FAR *)&yes, sizeof(BOOL));rn if (ret == SOCKET_ERROR)rn rn return;rn rnrn SOCKADDR_IN addrSrv;rn addrSrv.sin_family = AF_INET;rn addrSrv.sin_port = htons(56789);rn addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);rnrn if (bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR)) == SOCKET_ERROR)rn rn return;rn rnrn char recvBuf[100];rn char sendBuf[100];rn rn SOCKADDR_IN addrClient;rn memset(&addrClient, 0, sizeof(addrClient));rn rn int len = sizeof(SOCKADDR);rnrn while (1)rn rn if (recvfrom(sockSrv, recvBuf, 100, 0, (SOCKADDR*)&addrClient, &len) == SOCKET_ERROR)rn rn return;rn rnrn printf("%s %s\n", inet_ntoa(addrClient.sin_addr), recvBuf);rnrn rn closesocket(sockSrv);rn WSACleanup();
socket UDP广播的发送和接收示例
网络通信基础 如果网络中两个主机上的应用程序要相互通信,其一要知道彼此的IP,其二要知道程序可监听的端口。因为同一主机上的程序使用网络是通过端口号来区分的。 UDP Socket的使用过程: 1. 初始化网络库 2. 创建SOCK_DGRAM类型的Socket。 3. 绑定套接字。 4. 发送、接收数据。 5. 销毁套接字。...
JAVA之UDP广播接收与发送小程序
接收者 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.Point; import java.awt.Window; import java.aw
高分求:UDP广播(发送及接收)的样例!
在VB6下用WINSOCK及API可完成多播的应用,可在DOTNET下无从下手,谢谢!
用C#写UDP发送和接收程序
send和receive子程序都在本地执行rnrnsend子程序代码摘要:rnByte[] sendBytes = Encoding.ASCII.GetBytes("Is Anybody there?");rnUdpClient udpClient = new UdpClient("127.0.0.1", 11000);rnudpClient.Send(sendBytes, sendBytes.Length);rnudpClient.Close();rnrnReceive子程序想实现按下按钮“btnReceive”后,在标签“labReceive”上显示接收到的信息。rn按钮“btnReceive”单击的响应程序如下:rnIPEndPoint RemoteIPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 11100);rnUdpClient udpClient = new UdpClient();rnByte[] receiveBytes = udpClient.Receive(ref RemoteIPEndPoint);rnstring returnData = Encoding.ASCII.GetString(receiveBytes);rnlabReceive.Text = returnData.ToString();rnudpClient.Close();rn程序运行后单击按钮发生如下错误:System.Net.Sockets.SocketException: 提供了一个无效的参数。rnrn请高手指点,谢谢!
UDP/IP网络广播方式的接收问题
现做一实时系统接口,一台UNIX机采用UDP/IP网络广播方式向局域网内发送数据,rn我现在WINDOWS下能用WINSOCK控件来接收到它发送的数据吗?,以下代码行不?rnWinsock1.Protocol = sckUDPProtocolrn Winsock1.Remoteport = 2001 rn Winsock1.RemoteHost = "192.100.100.1"rn Winsock1.bind 2002
C# UDP多线程发送接收
通过多线程的方式实现了UDP收发数据 可以快速学习UDP通讯原理应进行实际应用
通过udp广播的包怎么得到发送方IP
利用udp广播来传递信息的时候,发送方只是把广播包发给了路由器,最终路由器会把该包发给所有网段内的终端.rnrn我的疑问是:rn这些终端能否知道发送方的IP地址
udp广播接收问题。
初始化代码:rnrnint InitNetCard0(HWND hWd,char *Address)rnrn BOOL optval=TRUE;rn int errno;rn if((s1=socket(AF_INET,SOCK_DGRAM,0))==INVALID_SOCKET)rn rn AfxMessageBox("0号网卡的套接口初始化失败!");rn return 1;rn rn if(setsockopt(s1,SOL_SOCKET,SO_REUSEADDR,(char FAR*)&optval,sizeof(optval))==SOCKET_ERROR)rn rn AfxMessageBox("0号网卡的套接口地址重用设置失败!");rn closesocket(s1);rn return 1;rn rn soin.sin_family =AF_INET;rn soin.sin_port =htons(port);rn soin.sin_addr.s_addr =inet_addr(Address);rn if(bind(s1,(LPSOCKADDR)&soin,sizeof(soin))==SOCKET_ERROR)rn rn AfxMessageBox("0号网卡的套接口绑定失败!");rn closesocket(s1);rn return 1;rn rn if(setsockopt(s1,SOL_SOCKET,SO_BROADCAST,(char FAR*)&optval,sizeof(optval))==SOCKET_ERROR)rn rn AfxMessageBox("0号网卡的套接口广播设定失败!");rn closesocket(s1);rn return 1;rn rn if(WSAAsyncSelect(s1,hWd,WM_MCAST_NETREAD0,FD_READ)==SOCKET_ERROR)rn rn AfxMessageBox("0号网卡的异步选择设定失败!");rn closesocket(s1);rn return 1;rn rn return 0;rnrnrnrn当接收消息触发时进行数据的接收,但是这时接收的数据是否完整(发送端发送的完整数据)?rn如果不完整怎样判断我收的到udp广播数据是完整的?rnrn
UDP广播接收问题
问题如下:rnrn试了下在两个机器上运行,只有其中一台机器上的程序能收到信息~~rnrnrn[code=C/C++]rn PIP_ADAPTER_INFO pAdapterInfo;rn pAdapterInfo = (IP_ADAPTER_INFO*)malloc(sizeof(IP_ADAPTER_INFO));rn unsigned long ulLen = sizeof(IP_ADAPTER_INFO);rn GetAdaptersInfo(pAdapterInfo,&ulLen);rn CString mask = (CString)pAdapterInfo->IpAddressList.IpMask.String;rn ip = inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list);rn u_long umask = CStringToDword(mask);rn u_long ipaddr = CStringToDword(ip);rn u_long net = umask&ipaddr;rn broad = net|(~umask);rn free(pAdapterInfo);rn pAdapterInfo = NULL;rnrn SOCKADDR_IN addr;rn addr.sin_family = AF_INET;rn addr.sin_port = m_uiPort;rn addr.sin_addr.S_un.S_addr = ipaddr;rnrn reVal = bind(m_srSocket,(SOCKADDR*)&addr,sizeof(addr));rn AfxBeginThread(RecvThread,this);rn bool opt = 1;rnrn setsockopt(m_socket,SOL_SOCKET,SO_BROADCAST,(char *)&opt,sizeof(bool));rn char fuck[5] = "test";rnrn SOCKADDR_IN sendaddr;rn sendaddr.sin_family = AF_INET;rn sendaddr.sin_port = m_uiPort;rn sendaddr.sin_addr.S_un.S_addr = broad;rnrn reVal = sendto(m_socket,fuck,sizeof(fuck),0,(SOCKADDR*)&sendaddr,sizeof(sendaddr));rnrnrn//下面的代码是RecvThread里面的,CStringToDword是定义的一个把IP字符串转换成DWORD类型的函数rnrn char test[5];rn SOCKADDR_IN clientaddr;rn int nlen = sizeof(clientaddr);rn while(true)rn rn int reVal = recvfrom(pArg->m_srSocket,test,sizeof(test),0,(SOCKADDR*)&clientaddr,&nlen);rn rn rn if(SOCKET_ERROR != reVal)rn rn CString temp;rn temp = test;rn AfxMessageBox(temp);rn rn Sleep(500);rn rnrn[/code]
udp广播怎么接收
namespace WindowsApplication1rnrn public partial class Form1 : Formrn rn public delegate void mydelegate(string s );rn public Thread my ;rn public string myip;rn public string myName="Emily";rn public const int port1 = 555;rn // public UdpClient accept;rn public void mf()rn rn mydelegate mm = delegate(string s) listen(); ;rn rn rn rn rn public void listen()rn rn UdpClient accept = new UdpClient(port1);rn rn tryrn rn IPEndPoint iep3 = new IPEndPoint(IPAddress.Any, 555);rn while (true)rn rn Byte[] message = accept.Receive(ref iep3);rn this.richTextBox1.AppendText(message.ToString ());rn richTextBox1.ScrollToCaret();rn rn rn rn catch (System.Security.SecurityException)rn rn MessageBox.Show("防火墙安全错误!", "错误",rn MessageBoxButtons.OK, MessageBoxIcon.Exclamation);rn rn catch (Exception f)rn rn MessageBox.Show(f.Message);rn rn finallyrn rn accept.Close();rn rn rn rnrn public void send()rn rn tryrn rn Socket sock = new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp); rn IPEndPoint iep2 = new IPEndPoint(IPAddress.Parse("192.168.53.255"),port1); rn sock.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.Broadcast,1);rn sock.SendTo(System.Text.Encoding.Unicode.GetBytes(textBox1.Text), iep2); rn sock.Close();rn string msg = myName + ":" + DateTime.Now.ToString("T") + "\r\n" + textBox1.Text + "\n";rn this.richTextBox1.AppendText(msg);rn this.richTextBox1.ScrollToCaret();rn textBox1.Clear();rn rn catch (Exception ff)rn rn MessageBox.Show(ff.Message);rn rn rnrn public Form1()rn rn InitializeComponent();rn my = new Thread(new ThreadStart(mf));rn my.Start();rn rnrn private void button1_Click(object sender, EventArgs e)rn rnrn rnrn private void Form1_Load(object sender, EventArgs e)rn rn rn rn rn private void textBox1_TextChanged(object sender, EventArgs e)rn rn if (textBox1.Text.Length == 0)rn rn button3.Enabled = false;rn rn else button3.Enabled = true;rn rnrn private void richTextBox1_TextChanged(object sender, EventArgs e)rn rnrn rnrn private void button2_Click(object sender, EventArgs e)rn rn rn rnrn private void 帮助ToolStripMenuItem_Click(object sender, EventArgs e)rn rnrn rnrn private void button3_Click(object sender, EventArgs e)rn rn send();rn rn rn rnrn
接收广播UDP 急
我要接收一个广播UDP(MFC编程)应该怎么办呢 rn(我想在OnTimer中设置每50毫秒 rnWSAStartup() rn然后bind()然后recvfrom() rn如果收到的不为空,则转发出去 rn) rnrn我的程序就是这样的 rn收数据--数据转换--转发数据rn请问应该listen()?应该多线程?rn
ip组播发送和接收的filter如何编写
在网络视频教学系统中用ip组播方式广播老师机上的教学视频rn求相关资料rn最好有ip组播发送和接收的filter源代码
跪求C# udp Socket异步广播发送和接收代码
哪位高手能来一段?
android发送UDP广播
在android平台实现UDP广播的发送示例程序
C++发送udp广播
使用c++语言编写的udp广播,在局域网内的其他设备通过接收udp广播获得信息 。
发送UDP广播
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; pu
UDP广播发送和接收端
UDP 广播通讯 接收端 发送端 代码可执行程序 截图
自定义广播发送和接收
1、静态注册 1)先在 MainActivity 里面 新建一个 含有action 的 intent 2) 在 intent 里面添加键值 、 数据。 3)发送广播 package com.example.lum.mydroadcast; import android.content.Intent; import android.support.v7.app.AppCompatA...
Android-广播发送接收
发送广播要定义一个action,在接收数据的地方也要用同一个action。String BROADCAST_ACTION ="com.M_xang.broadcast"; Intent intent = new Intent(BROADCAST_ACTION); intent.putExtra("DATA", "数据"); sendBroadcast(int
广播接收和发送
广播接收和发送,通过发送广播通信,可以跨进称
C# 实现UDP信息发送
此案例是利用C# visual studio 开发平台 实现UDP的网络通信
Socket发送和接收广播
通过以下方法发送广播C#语言能够正常接收,JAVA也能正常接收,C++无法接收(C++接收C++可以正常接收),请各位大虾帮忙解决,小弟不胜感激,最好能提供C#发送广播C++接收的源码.谢谢!rn[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/7.gif][/img]
Android——发送和接收广播
一,发送广播 利用Intent来发送广播。 使用:在需要发送广播的地方创建一个Intent对象,将信息的内容和用于过滤的信息封装起来,通过以下三种方法将Intent广播出去: 1,Context.sendBroadcast 2,Context.sendOrderedBroadCast 3,Context.sendStickyBroadcast...
发送和接收广播
布局代码:&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;    xmlns:tools=&quot;http://schemas.android.com/tools&quot;    android:id=&quot;@+id/container&quot;    android:layout_width=&quot;match_parent&quot;...
android发送和接收广播
发送方 public static final String action = "jason.broadcast.action"; 发送 Intent intent = new Intent(action); intent.putExtra("data", "closeActivity"); sendBroadcast(intent); 接收方: //注册广播: I
发送和接收无序广播
发送广播: 1.在需要发送的地方设置意图动作,发送广播 Intent intent = new Intent(); intent.putExtra("data", "这是一条新的消息"); intent.setAction("com.skxy.unorder.MainActivity.FM"); sendBroadcast(intent);//发送广播,不需要在清单文件注册
MFC udp广播后,recvfrom得到的为什么一直是电脑的IP,我想得到设备的IP
这个是监控工具的:rnrn[img=https://img-bbs.csdn.net/upload/201407/25/1406278380_988991.jpg][/img]rnrn192.168.1.79是电脑的,发送广播,192.168.1.80是个设备的,广播发EASYNET,下面返回NETEASY , rnrn以下是代码: 返回的都是电脑的:192.168.1.79rn[code=c]rn SOCKET sock; //socket套接字rn char szMsg[] = "EASYNET";//广播发送的字段 rn WORD wVersionRequested; //1.启动SOCKET库,版本为2.0rn WSADATA wsaData;rn int err;rn int i =1;rn wVersionRequested = MAKEWORD( 2, 0 ); rn err = WSAStartup( wVersionRequested, &wsaData );rn if ( 0 != err ) //检查Socket初始化是否成功rn rn MessageBox("Socket2.0初始化失败,Exit!");rn return;rn rn rn if (LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 0 )//检查Socket库的版本是否为2.0rn rn WSACleanup( );rn return;rn rnrn sock = socket(AF_INET,SOCK_DGRAM,0);rnrn if (INVALID_SOCKET == sock ) rnrn MessageBox("Socket 创建失败,Exit!");rn return;rn rn bool opt = true;rnrn setsockopt(sock, SOL_SOCKET, SO_BROADCAST, reinterpret_cast(&opt), sizeof(opt));//3.设置该套接字为广播类型rn sockaddr_in addrto; //设置发往的地址rn memset(&addrto,0,sizeof(addrto));rn addrto.sin_family = AF_INET; //地址类型为internetworkrn addrto.sin_addr.s_addr = INADDR_BROADCAST; //设置ip为广播地址rn addrto.sin_port = htons(120); //端口号为120rnrnrn //绑定地址和端口号rn SOCKET sockSvr=socket(AF_INET,SOCK_DGRAM,0); rn SOCKADDR_IN svrAddr=0;rn svrAddr.sin_port=htons(120);rn svrAddr.sin_family=AF_INET;rn svrAddr.sin_addr.S_un.S_addr=INADDR_ANY;rn bind(sockSvr,(SOCKADDR*)&svrAddr,sizeof(svrAddr));rnrn int nlen=sizeof(addrto);rn unsigned int uIndex = 1;rnrn CHAR szBuff[100]=0;rn SOCKADDR_IN clientAddr=0;rn int nLen=sizeof(clientAddr);rnrn while (i <3)rn rn Sleep(1000); //程序休眠一秒rn if( sendto(sock, szMsg, strlen(szMsg), 0, (sockaddr*)&addrto,nlen)== SOCKET_ERROR )//广播rnrn MessageBox((LPCTSTR)WSAGetLastError);rn elsern rn //MessageBox("广播一次!释放socket");rn recvfrom(sockSvr,szBuff,100,0,(SOCKADDR*)&clientAddr,&nLen);rn char * pszIP=inet_ntoa(clientAddr.sin_addr); rn MessageBox(pszIP);rn i++;rn //WSACleanup( ); rn rn rnrnrn /* rn while (recvfrom(sockSvr,szBuff,100,0,(SOCKADDR*)&clientAddr,&nLen)>=0)rn rn char * pszIP=inet_ntoa(clientAddr.sin_addr);rn MessageBox(pszIP); rn rn*/rn //关闭socketrn closesocket(sockSvr);rn if (!closesocket(sock)) //关闭套接字rn rn WSAGetLastError();rn return;rn rn if (!WSACleanup()) //关闭Socket库rn rn WSAGetLastError();rn return;rn [/code]
c# UDP 广播的接受发送,监听的使用
使用了UDP,线程监听的使用,委托的方式
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法