android 广播自定义广播接收问题
其实没啥技术可言的,就是Android中可以自定义权限的,对于四大组件的访问加上一层保护,不多说了,直接上代码:[java] view plaincopypackage com.tt.test;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;public class Main extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);((Button)findViewById(R.id.button)).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent i = new Intent("COM.MESSAGE");i.addCategory("receiver");i.putExtra("message", "haha");sendOrderedBroadcast(i, "xvtian.gai.receiver");}});AndroidManiFest.xml:[html] view plaincopy[java] view plaincopypackage com.tt.receiver;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class Receiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Log.d("TAG", "receiver intent:" + intent.toString());AndroidManifest.xml[html] view plaincopy[html] view plaincopy
求助:UDP编程,无法接收广播数据包
创建UDP的socketserver,端口就是返回的数据包使用的端口,然后在server的接收函数里面获取,删选;或者也可以直接起个原始套接字的server,接收所有的套接字流,然后根据你的返回数据包的端口慢慢删选;
本回答由网友推荐
mfc中如果不设置套接字的广播功能,那么它能接收到广播消息吗!~
一、接收与发送过程:服务器端1、创建服务器套接字(create)。2、服务器套接字进行信息绑定(bind),并开始监听连接(listen)。3、接受来自客户端的连接请求(accept),并创建接收进程。4、开始数据传输(send、receive)。5、关闭套接字(closesocket)。客户机端1、创建客户机套接字(create)。2、与远程服务器进行连接(connect),如被接受则创建接收进程。3、开始数据传输(send、receive)。4、关闭套接字(closesocket)。二、在vc中的实现:服务器端:一、建立支持socket项目。利用app wizard创建mfc exe项目,进行到wizard的第四步时,在“what features would you like include?”中,选中“windows sockets”项。其它各步骤各选项根据实际应用进行选择即可。这样创建的项目就已经支持socket,并已经初始化了。如果要在已有的项目中添加socket支持,只须进行两项工作:1、在stdafx.h文件中包含头文件winsock.h (#include “winsock.h” )。2、在应用程序类的成员函数:“::initinstance()”中添加如下初始化套接字代码。if?(!afxsocketinit()){afxmessagebox(idp_sockets_init_failed);return?false;}二、创建服务套接字并创建监听线程。//创建服务套接字socket?sercon=socket(pf_inet,sock_stream,0);//判断是否成功创建if?(sercon==invalid_socket){afxmessagebox(“server?wrong?!”);return?-1;}//配置套接字地址等信息sockaddr_in?sin;sin.sin_family=af_inet;//指定本地地址sin.sin_addr.s_addr=htonl(inaddr_any);//指定服务器端口号nport,可自设int?nport=5080;sin.sin_port=htons(nport);//地址信息与套接字进行绑定。if?(bind(sercon,(lpsockaddr)&sin,sizeof(sin))==socket_error){afxmessagebox(“bind?wrong!”);return?-1;}//建立监听队列(大小为3),开始监听if?(listen(sercon,3)==socket_error){afxmessagebox(“listen?wrong!”);return?-1;};①实现监听线程,并创建数据接收线程。//在程序需要开始监听连接的地方创建监听线程,并实现。//创建监听线程(在程序开始或按钮事件实现中)afxbeginthread(waitconnect,null);//实现监听线程uint waitconnect(lpvoid lpparm){socket conn[3];int lenc=sizeof(sockaddr);int alreadycon=0;//sercon为前面所创建服务器套接字while(1){if (alreadycon<=3){//接受连接请求conn[alreadycon]=accept(sercon,&cin,&lenc);if (conn[alreadycon]==invalid_socket){afxmessagebox(“accept wrong !”);}else{//创建数据接收线程afxbeginthread(readdata,&connn[alreadycon]);alreadycon= alreadycon+1;return 0;}}else{//避免影响主线程运行sleep(200);}}}②实现数据接收线程。uint waitconnect(lpvoid ss){ socket *readsock;readsock=(socket *)ss;char buf[2000];int revnum=0;//开始循环接受数据while (revnum!=-1){//revnum<=0则表示连接已断!revnum=recv(*readsock,buf,2000,0);if (revnum>0)buf[revnum]=0;//截断缓冲区//buf中存储已接受数据。}}③发送数据//conn[1]为用于接受连接的套接字, sendstr为所发送数据。send(conn[1],lpctstr(sendstr),sendstr.getlength(),0);④关闭套接字。//conn[1]为用于接受连接的套接字closesocket(conn[1]);客户程序端:客户端程序的编程有很多与服务器端相同或相近,甚至相同的代码。一、建立支持socket项目。方法同服务器端。二、创建客户套接字、对服务器进行连接。//nhost 须用户指定的远程服务机,ip或域名。cstring nhost;//h为地址信息struct hostent *h;h=gethostbyname(nhost);//nhost 须用户指定的远程服务端口号int nport;socket con_client;sockaddr_in csin;if (h!=null){//创建套接字con_client =socket(af_inet,sock_stream,0);csin.sin_family=af_inet;memcpy(&(csin.sin_addr.s_addr),h->h_addr,sizeof(int));csin.sin_port=htons(nport);//开始连接if (connect(con_client,(lpsockaddr)&csin,sizeof(csin))){//afxmessagebox(“connect wrong!”);return -1;}else{//连接成功,创建数据接收线程afxbeginthread(readdata,&con_client);}}三、实现数据接收线程。代码与服务器端完全相同。四、发送数据。//con_client 为与服务器进行连接的套接字。send(con_client,lpctstr(sendstr),sendstr.getlength(),0);五、关闭套接字。// con_client 为与服务器进行连接的套接字。closesocket(conn[1]);在实际应用中,应当根据需要调整并改变一些变量的作用域。
求助:UDP编程,无法接收广播数据包
看看你的防火墙总有没有限制udp报文。一个是adsl拨号连接的一个是安装的防火墙/杀毒软件