我有一个Object(即不是表格)想要收听来自Windows的广播消息,例如:
WM_SETTINGCHANGEWM_DWMCOLORIZATIONCOLORCHANGEDWM_DWMCOMPOSITIONCHANGEDWM_THEMECHANGEDWM_POWERBROADCAST.NET中设置非WinForm窗口的机制是什么,可以监听广播消息?
即有WindowsListener课吗?
在过去,在其他开发环境中,框架提供了一个AllocateHwnd功能:
HWND listener = AllocateHWnd(ListenerWindowProc);
Run Code Online (Sandbox Code Playgroud)
ListenerWindowProc我的窗口程序方法在哪里:
private void ListenerWindowProc(ref Message msg)
{
switch (msg.msg)
{
case WM_SETTINGCHANGE:
{
...
}
break;
case WM_POWERBROADCAST:
{
...
}
break;
case WM_THEMECHANGED:
{
...
}
break;
...
}
DefWindowProc(msg);
}
Run Code Online (Sandbox Code Playgroud)
秘诀是AllocateHwnd功能:
伪代码:
public static HWND AllocateHWnd(WndMethod method)
{
HWND result;
WNDCLASS tempClass;
Boolean classRegistered;
UtilWindowClass.hInstance := HInstance;
Boolean classRegistered = GetClassInfo(HInstance, UtilWindowClass.lpszClassName, tempClass); …Run Code Online (Sandbox Code Playgroud) 我有一些数据的 UDP 广播。我可以在 OSX 10.6.8 下的 python 2.6.1 中打开以下客户端,并且可以正常工作。我可以捕捉数据,一切都很好。
但是:这段代码“消耗”了端口,因为我无法打开另一个端口,第二次尝试绑定失败......我必须允许多个侦听器。这是打开端口的代码:
import select, socket
port = 58083 # port msg is broadcast upon
# Create listening port
# ---------------------
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
s.bind(('', port))
except:
print 'failure to bind'
s.close()
raise
s.setblocking(0)
Run Code Online (Sandbox Code Playgroud)
...由于 UDP旨在向多个客户端广播(除其他外),我认为我做错了什么。我就是想不通是什么。
我在 activestate 上找到了一个示例,该示例建议:
s.bind(('<broadcast>',port))
Run Code Online (Sandbox Code Playgroud)
...但每次都失败了。绑定到0.0.0.0作品,但也遭受“一个客户端”的问题。绑定到本地 IP(例如192.168.1.100)根本不起作用。删除绑定根本不起作用。
任何人?
我有一个Ubuntu虚拟机侦听由主机生成的UDP广播数据包.如果我使用python的socket.bind方法绑定到我的任何一个网络接口eth1或lo(本地环回),我就不会收到任何数据包.但是,如果我使用''(所有接口的符号)进行绑定,那么一切都很好.我希望有可能只绑定eth1的地址,但似乎并非如此.有人可以解释为什么需要'?是否有一些时髦的事情,因为我正在使用虚拟机?我正在使用桥接网络设置,因此虚拟机看起来像我的LAN上的另一台机器.这是代码:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
# using the '' address works
sock.bind(('', UDP_PORT))
# using the address of eth1 doesn't
#sock.bind(('192.168.2.123', UDP_PORT))
# and neither does using the local loopback
#sock.bind(('127.0.0.1', UDP_PORT))
while True:
data, addr = sock.recv(2048)
print data
Run Code Online (Sandbox Code Playgroud) 如何获得所有应用程序的启动次数?我有已安装的应用程序的完整列表,我在安装应用程序时有广播,但我需要任何应用程序的启动计数.我看到这个应用程序.你有cpu时间,前台时间和启动计数......他们怎么做?
我有一个场景,我需要非角度代码(在这种情况下Facebook和Twitter JS sdk)来广播角度控制器可以收听的事件.为什么?在初始页面加载后,我通过AJAX加载和修改页面中的内容.内容有多个喜欢/推特按钮(如博客/聚合器的首页).我想在Facebook"喜欢"按钮或Twitter"分享"按钮上发生点击时添加事件挂钩 - 页面中有一些,每当获取新内容时每个都在变化(再次,通过ajax ).
现在,SDK的处理方式不同:
twttr.events.bind('click', function(event){
// here I'd like to somehow
// $rootScope.$broadcast("twitter:clicked", event.currentTarget)
});
Run Code Online (Sandbox Code Playgroud)
FB.Event.subscribe("edge.create", function(resp) {
// here I'd like to somehow
// $rootScope.$broadcast("facebook:clicked", resp)
});
Run Code Online (Sandbox Code Playgroud)
app.controller("SomeController", ['$scope', function($scope) {
$scope.$on("facebook:clicked", function(event, resp) {
// do something with resp
});
$scope.$on("twitter:clicked", function(event, target) {
// do something target
});
}])
Run Code Online (Sandbox Code Playgroud)
我们的想法是绑定这些事件处理程序,然后处理相关控制器中的广播消息,即使每次获取新内容时都会重新创建这些控制器.
所以基本上,我正在寻找的是一种挂钩现有的已经初始化的角度应用程序$rootScope和$broadcast消息的方法,尽管它不是应用程序的一部分.希望这是有道理的.谢谢.
我正在使用GCDAsyncUdpSocket在我的应用程序中编写UDP套接字.场景是这样的:当用户点击按钮时,它将在LAN中发送广播数据包然后收听响应,LAN中有一个服务器将响应一个UDP数据包.当应用收到响应时,它会执行某些操作.
我设定GCDAsyncUdpSocket如下:
- (void)setupSocket
{
_udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
NSError *error = nil;
if (![_udpSocket bindToPort:18686 error:&error]) {
NSLog(@"Error binding: %@",error);
return;
}
if (![_udpSocket beginReceiving:&error]) {
NSLog(@"Error receiving: %@",error);
return;
}
if (![_udpSocket enableBroadcast:YES error:&error]) {
NSLog(@"Error enableBroadcast: %@",error);
return;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我按钮按钮动作发送如下:
NSString *host = @"255.255.255.255";
int port = 8585;
NSString *msg = @"Hello from iOS";
NSData *data = [msg dataUsingEncoding:NSUTF8StringEncoding];
[_udpSocket sendData:data toHost:host port:port withTimeout:-1 tag:0];
Run Code Online (Sandbox Code Playgroud)
在
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData …Run Code Online (Sandbox Code Playgroud) 我在使用新的Nexus 5X(Marshmallow)不断收到来自服务器的UDP数据包时遇到问题
我有另一个真正的设备接收所有UDP数据包,但似乎在Android API 23中发生了一些变化.
码:
谁有同样的问题?
if (s == null || s.isClosed()){
Log.v("udp", "----------------------------------------------------new socket---------------------------------");
s = new DatagramSocket(null);
s.setReuseAddress(true);
s.setBroadcast(true);
s.setSoTimeout(5000);
s.bind(new InetSocketAddress(8002));
p = new DatagramPacket(message, message.length);
try{
Thread.sleep(100);
}
catch(Exception e){
}
}
//Log.v("test","---------------------------------------------------- Pas1 ---------------------------------");
message = new byte[100];
//p = new DatagramPacket(message, message.length);
p.setLength(message.length);
s.receive(p);
Run Code Online (Sandbox Code Playgroud)
问题是:
我随机收到广播包,同时收到我收到的其他真实设备.
我确信在android api 23中有些东西被改变了.看来,如果缓冲区中有一个数据包,接收函数只会"触发",但如果在没有"内部"的情况下调用它,则会出现sockettimeout.
谢谢!
我是Laravel广播的新手,目前正在使用5.4。我要更新帐户仪表板,当其他人创建新帖子时,我正在使用私人渠道,该仪表板按他们的兴趣包含相关帖子。我成功广播了另一个用户在当前登录的用户仪表板中发布的每个新帖子,我需要检查新帖子是否相关,如果不发布则进行广播。
我想我可以在内部BroadcastServiceProvider编写授权事件中的过滤来实现。
public function boot(){
Broadcast::routes();
Broadcast::channel('discovery.post', function ($user) {
return true;
});
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了有关可以与通道名称一起传递数据的文档,例如
Broadcast::channel('discovery.post.{postId}', function ($user, $postId) {
// get post category, tags, etc compare with user interest
return $isInterest;
});
Run Code Online (Sandbox Code Playgroud)
但是这种方法也必须在laravel Echo中传递新的帖子ID
window.Echo.private('discovery.post.{how-i-get-this-id?}')
.listen('NewPostDashboard', (data) => {
// add new update to dom
});
Run Code Online (Sandbox Code Playgroud)
我如何解决此问题,我想保留我的频道名称discovery.post,我只想发送给具有相关兴趣的用户,我需要Post实例来检查登录的用户是否对此帖子感兴趣。
如果我的问题不清楚,请让我投票。谢谢。
我已经构建了一个监听 UDP 广播 url(例如:192.168.1.255)的 android 应用程序,以及一个应该向广播 url 发送 UDP 数据包以查找当前连接到同一网络的所有设备的网站,这将响应通过向同一个 url 发送另一个广播来发送广播消息。无论如何使用本机javascript发送UDP数据包?如果没有,还有其他选择吗?
我正在尝试在我的Angular Application中使用service-worker。它是使用webpack构建的。
我使用workbox-webpack-plugin。我想为我的GET API调用提供表单缓存,并在后台更新数据。
为此,我将选项runtimeCaching与处理程序一起使用staleWhileRevalidate(有关GenerateSW插件的更多详细信息,请参见此处)
这是我在webpack.config.js中的配置:
new GenerateSW({
// importWorkboxFrom: 'local',
clientsClaim: true,
skipWaiting: true,
navigateFallback: '/index.html',
runtimeCaching: [
{
// Match any same-origin request that contains 'api'.
urlPattern: /https:\/\/api.*/,
handler: 'staleWhileRevalidate',
options: {
cacheName: 'api',
broadcastUpdate: {
channelName: 'api-updates',
},
// Add in any additional plugin logic you need.
plugins: [],
},
}
]
}),
Run Code Online (Sandbox Code Playgroud)
根据本文档,当缓存更新时,我应该能够收到一个事件(我想向用户显示某些内容,以便他可以刷新数据)。
接收数据的代码如下所示:
export class AppComponent implements OnInit {
public ngOnInit() {
console.log( 'AppComponent - ngOnInit' ); …Run Code Online (Sandbox Code Playgroud) broadcast ×10
udp ×4
android ×2
python ×2
.net ×1
angular ×1
angularjs ×1
external ×1
ios ×1
javascript ×1
laravel ×1
laravel-echo ×1
launch ×1
networking ×1
objective-c ×1
php ×1
pusher ×1
rootscope ×1
sockets ×1
ubuntu ×1
virtualbox ×1
webpack ×1
windows ×1
workbox ×1