我有一个奇怪的要求,能够在Linux机器上从Java监听许多网络接口,并确定其中一个是否接收某种类型的UDP数据包.我需要的输出数据是相关接口的IP地址.有没有办法在Java中这样做?
通过通配符地址(新的DatagramSocket(端口))进行监听没有帮助,因为虽然我获得了广播数据包,但我无法确定它们所通过的接口的本地IP地址.在绑定到某个接口(新的DatagramSocket(端口,地址))时收听广播根本不接收数据包.这种情况值得一个代码示例,显示我正在尝试做的事情:
Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface) interfaces.nextElement();
Enumeration addresses = ni.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = (InetAddress)addresses.nextElement();
if (address.isLoopbackAddress() || address instanceof Inet6Address)
continue; //Not interested in loopback or ipv6 this time, thanks
DatagramSocket socket = new DatagramSocket(PORT, address);
//Try to read the broadcast messages from socket here
}
}
Run Code Online (Sandbox Code Playgroud)
我还尝试使用基于接口的真实IP的开头构建的广播地址来初始化套接字,其余的根据正确的网络掩码:
byte [] mask = { (byte)255, 0, 0, 0 };
byte[] addrBytes = InetAddress.getByName("126.5.6.7").getAddress();
for (int i=0; i < 4; i++) …Run Code Online (Sandbox Code Playgroud) 我正在为特定类型的网络多媒体设备实现一种IP查找器.我想找出局域网中所有类型的活动设备,包括它们的IP地址和其他细节.
该设备有自己的设备发现方式.
它的工作原理如下:客户端通过UDP通过LAN发送广播请求.
目标端口号是固定的.
作为回应,LAN中理解此请求格式的所有服务器都将响应此请求,提供有关自身的信息.
我正在使用sendto()广播UDP请求消息.
现在我的问题是我不知道有多少设备(ieservers)会响应请求.
我需要多少次调用recvfrom()?
我什么时候才能知道我已经处理了所有设备的响应?
或者一般来说,recvfrom()是从多个服务器接收响应的正确选择吗?
有没有更好的(或者如果我错在这里是正确的)完成相同的方式?
我正在用C/C++编程,计划为Windows和Linux编写代码.
提前谢谢了.
编辑:所以在这里的所有网络编程向导的帮助下,我找到了解决我的问题的方法:)
select()对我来说就是这样的事情...非常
感谢所有花时间帮忙的人我
所以我们在产品中有这种不寻常的需求.我们在本地主机上运行了许多进程,需要构建它们之间的通信方式.困难在于......
一些更重要的细节......
我们需要发送的"消息"本质上是微不足道的.消息类型的名称和单个字符串参数就足够了.
通信不一定是安全的,不需要提供任何认证或访问控制手段; 但是,我们希望通过Windows登录会话对通信进行分组.这里可能感兴趣的是,非升级过程应该能够与升高的过程相互作用,反之亦然.
我的第一个问题是:是否存在一个现有的开源库?或者可以用来轻松实现这一目标的东西.截至目前我还没有找到任何东西:(
如果这个库不存在那么......你会用什么技术来解决这个问题?套接字,命名管道,内存映射文件,事件句柄?似乎基于连接的传输(套接字/管道)在完全连接的图形中是个坏主意,因为n个节点需要n(n-1)个连接.使用事件句柄和某种形式的共享存储似乎是目前最合理的解决方案......
更新
它必须可靠且有保证吗?是的,没有......让我们说如果我正在倾听,而且我在合理的时间内做出回应,那么我应该总是得到这个消息.
什么是典型的邮件大小?少于100个字节,包括消息标识符和参数.这些都很小.
我们在谈论什么消息率?低吞吐量是可以接受的,每秒10个会很多,平均使用率大约是每分钟1个.
涉及的流程数量是多少?我希望它处理0到50之间,平均值在5到10之间.
当设置套接字dgram.createSocket('udp4');并且不将其绑定到特定端口时,我会接收发送到255.255.255.255的广播数据包但是当我将相同的套接字绑定到我的接口的特定IP时,我this.server.bind(67, host);将不会收到这些广播的数据包.这是正常行为吗?
如何在特定时间自动更改Android手机配置文件模式.
我想这下发展变化建立一个时间表,并在特定的时间安排,轮廓模式自动切换到所需的模式的应用程序.
我该怎么办?
我正在使用服务在控制器之间共享数据.应用程序必须在修改变量时更新DOM.我找到了两种方法,你可以在这里看到代码:
http://jsfiddle.net/sosegon/9x4N3/7/
myApp.controller( "ctrl1", [ "$scope", "myService", function( $scope, myService ){
$scope.init = function(){
$scope.myVariable = myService.myVariable;
};
}]);
Run Code Online (Sandbox Code Playgroud)
myApp.controller( "ctrl2", [ "$scope", "myService", function( $scope, myService ){
$scope.increaseVal = function(){
var a = myService.myVariable.value;
myService.myVariable.value = a + 1;
};
}]);
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/sosegon/Y93Wn/3/
myApp.controller( "ctrl1", [ "$scope", "myService", function( $scope, myService ){
$scope.init = function(){
$scope.increasedCounter = 1;
$scope.myVariable = myService.myVariable;
};
$scope.$on( "increased", function(){
$scope.increasedCounter += 1;
}
}]);
Run Code Online (Sandbox Code Playgroud)
myApp.controller( "ctrl2", [ "$scope", "myService", function( $scope, myService ){
$scope.increaseVal …Run Code Online (Sandbox Code Playgroud) 我需要从我的一个应用程序向另一个应用程序发送广播..任何帮助!我的应用程序包是1)com.demo.database和2)com.demo.list
Intent themesIntent = new Intent(ThemesManager.THEMES_UPDATED);
themesIntent.putExtra("package", packageName);
ctx.sendBroadcast(themesIntent);
Run Code Online (Sandbox Code Playgroud)
不工作..
编辑:
<receiver android:name="com.sample.ThemesUpdatedReceiver">
<intent-filter>
<action android:name="com.sample.THEMES_UPDATED"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud) 我正在为Android和iOS开发社交应用程序,iOS和Server工作已经开始.
我们的应用需要使用我们的应用向最终用户广播实时音频/视频.我们尝试过使用RED5和WOWZA设置服务器.
在iOS中我们遇到了来自RED5 iOS SDK的广播公司的崩溃,错误的框架所以我们搬到了WOWZA的试用版
在实施了适用于iOS的WOWZA GoCoder SDK之后,我们发现它的许可证对我来说太贵了8000美元+ 2000美元/年维护:(
午夜编码器似乎从评论中出错(我还没有将它用于广播客户端)
任何人都可以推荐我使用好的iOS SDK或一些自定义方式来实现我的移动相机的直播流媒体.
任何帮助将受到高度赞赏.谢谢
我知道ValueError问题已被问过很多次。我仍在努力寻找答案,因为我inverse_transform在我的代码中使用。
说我有一个数组 a
a.shape
> (100,20)
Run Code Online (Sandbox Code Playgroud)
和另一个数组 b
b.shape
> (100,3)
Run Code Online (Sandbox Code Playgroud)
当我做了一个np.concatenate,
hat = np.concatenate((a, b), axis=1)
Run Code Online (Sandbox Code Playgroud)
现在的形状hat是
hat.shape
(100,23)
Run Code Online (Sandbox Code Playgroud)
在此之后,我尝试这样做,
inversed_hat = scaler.inverse_transform(hat)
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我收到一个错误:
ValueError:操作数无法与形状一起广播 (100,23) (25,) (100,23)
这是广播错误inverse_transform吗?任何建议都会有所帮助。提前致谢!
我想问您是否可以以广播模式将数据(字符串)从 BLE 设备(例如 Raspberry Pi、Onion 或带有蓝牙加密狗的 Arduino)发送到另一个设备(例如电话或另一个 Raspberry Pi) ,这将在屏幕上显示数据。
老实说,没有必要在屏幕上显示数据,但其他设备必须能够用我将创建的 C 程序详细说明接收到的数据。
我对这个主题进行了大量研究,但我只能找到有关信标的答案,这些对象无法为我的项目发送有用的数据(如字符串),或者必须相互连接才能发送/接收数据的 BLE 设备。
我想用 C 创建一个程序,以实现这个结果。我在 BlueZ 库中搜索了一些有用的东西,但我找不到任何东西,因为它们没有解释其函数的含义。如果可能的话,我不想创建一个 android/iOS 应用程序。