Qt Remote Objects' interoperability between operating systems - qt

Can 2 Qt applications running on 2 different OSes -- one on Windows and the other one on macOS for instance -- communicate using QtRO?
I assume they can, but can anybody confirm this?
Thank you.

Yes, it is possible for two Qt applications running on different operating systems to communicate using Qt Remote Objects.
yout will need :
QtRO server with QRemoteObjectHost
QtRO cient with QRemoteObjectNode
Then you can use the client to access the exposed QObjects and invoke methods on them.
For more information on how to use QtRO, you can refer to the QtRO documentation: https://doc.qt.io/qt-5/qtremoteobjects-index.html

Related

How to use WinPcap in Xamarin (Forms)

There are many .Net wrappers in C# for WinPcap like SharpPcap and PcapDotNet
I have tried to add these Nuget packages to my Xamarin Forms projects but it does not work. I want to create a wifi/packet scanner but I am not sure how to do this in Xamarin. Is it even possible?
When I clone the GitHub repo and build my own version of SharpPcap, the application runs, but I get the error:
System.DllNotFoundException: wpcap
The wpcap.dll is the dll that all these packages are wrapped around and use [DllImport("wpcap.dll")] to work. This wont work in Xamarin (I think).
Another way to use dll's is when you embed them as an application resource, is there any library which I can use that does that?
WinPcap consists of a driver, that extends the operating system to
provide low-level network access, and a library that is used to easily
access the low-level network layers. This library also contains the
Windows version of the well known libpcap Unix API.
Source: https://www.winpcap.org/
There is nothing impossible, however in mobile world you don't have that low level access to drivers and etc. unless you have a root on your device. It is unclear what exactly you want to build. But I know that on both iOS & Android there is an app called Fing. It scans your WiFi network for connected devices. It is written natively per platform. On Android there used to be many different applications that used MITM technique. For example DroidSheep. But I am not aware of any cross-platform solution that is able to scan the network or sniff packages.

Run multiple instances of IBM BPM

I have the IBM Business Process Manager Advanced 7.5 installed.
Question:
Is it possible to install and run newer version - IBM BPM 8.5 on the same machine?
I worry about ports conflict (for example port 9043 to IBM Console).
Maybe I should ask how to change default port configuration?
Please help.
Technically it can be possible, however I suggest you do not do this as ibm bpm requires a lot of system resources to run and installing two versions of ibm bpm can make the system slower than ever before.
However I have seen multiple instances of same ibm bpm version running on a single cluster on server VM. This is practically stable and in use from considerable tenure.
PS. - I had administered a huge ibm bpm infra containing 80+ ibm bpm servers.
As Gas already commented, in theory this is possible. But you have to be aware, that IBM BPM is not only using the specified ports for web access, it also uses ports for internal communication. In my opinion, this is not an easy task to get right.
On the other hand, the system requirements for IBM BPM are quite challenging for the server, if You want to run both instances in parallel, you should consider that your server will need to be capable. WebSphere is kind of greedy and not really designed to share its resources ;)
Yes, you can run multiple versions of BPM on the same system. The primary concerns are going to be port conflict and OS system resources. Use the BPMConfig to create a new profile and installation that is on different ports. On my lab machines with VMs, I install all the BPM installs with the default ports and only have one (1) running at a time. If I need 2, I just spin up a new VM from the base template and go from there.
By Default, the port conflicts are addressed by the WebSphere Application server code. If needed you can specify "initialPortAssignment" for Dmgr, node and cluster members while creating the environment using BPMConfig command. You can even specify specific port numbers using the
https://www.ibm.com/support/knowledgecenter/en/SSFPJS_8.6.0/com.ibm.wbpm.ref.doc/topics/samplecfgprops.html
You can also provide Websphere options like "-startingPort starting_port | -portsFile ports_file_path | -defaultPorts" for Dmgr bpm.dmgr.profileOptions= and nodes bpm.de.node.#.profileOptions in the BPMConfig properties file. For cluster members just have option to indicate the starting port.
REf: https://www.ibm.com/support/knowledgecenter/cs/SSAW57_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/rxml_manageprofiles.html
I would not advise on changing the port numbers once you start using the BPM environment.
As indicated by others make sure you have enough resources if you are planning to run both environments at the same time.
Yes, I am using two versions for evaluation. Port conflicts can be handled using server (WebSphere Integrated Solutions Console) console or BPMConfig utils.

How to ping a remote machine with Qt

I am developping a cross-platform (Windows-Mac-Unix) application using Qt.
This is my first time using this framework so I am discovering it.
I need to ping a distant machine based on its IP address and I can't find a way to perform this task with the Qt framework, though it seems pretty basic...
I've found examples on the web but they use OS-dependant methods, which is precisely what I want to avoid since I have to run on different environments. Isn't there a simple ping command in the Qt framework? And how to use it?
Any help would be much appreciated, thank you in advance.
To my knowledge there is no direct way to ping another system in QT since it requires some superuser privileges in different Operating Systems. So the best way would be to try and establish a connection (preferably TCP) between the two machines.

scanning a system for shared folders in lan

I am developing an application in flex 3 using action script 3.........
I have some range of ip address in LAN(wired or wireless both).....i want to check which all the systems available...and also want to see their shared folders.....can anyone give some code or reference in action script....
Thanks to everyone...
Actually, I don't think it's possible at all with Flex due to sandbox violation of the Flash Player and/or not supporting it.
I don't know if Air supports network access in this way. Check this out for more information on Adobe Air.
MysticEarth is right, Flex cannot access the operating system directly because of security issues that might arise.
However, you can solve it in two ways:
Adobe AIR 2.0 Command-Line Integration:
Server-side script
Adobe AIR 2.0 can now run native processes! So you could have it access your operating system, check the systems available, shared folders, etc. Here's an example on how to execute native processes with AIR 2.0
The current standard is to just use Flex and HTTP to a server side script. To do something like what you're describing, I would create a ruby/php/python script or whatever, send a restful GET HTTP request to that script (say GET /shared_folders), and have that search the OS for what it needs, and return it as XML. Then you can use Flex. If you don't want to do that, AIR 2.0 is the only option.

Is porting qt to another OS as simple as this?

The article Porting Qt for Embedded Linux to Another Operating System lists five things you have to do to port Qt for Embedded Linux to another OS. From the article:
There are several issues to be aware of if you plan to do your own port to another operating system. In particular you must resolve Qt for Embedded Linux's shared memory and semaphores (used to share window regions), and you must provide something similar to Unix-domain sockets for inter-application communication. You must also provide a screen driver, and if you want to implement sound you must provide your own sound server. Finally you must modify the event dispatcher used by Qt for Embedded Linux.
Is it really this easy to port Qt to another OS, or have i missed some information?
Another important component to port would be QAtomic, to ensure that you can have atomic operations and implicit sharing working well. See also
http://labs.trolltech.com/blogs/2007/08/28/say-hello-to-qatomicint-and-qatomicpointer/
Since Qt has been ported a large number of times it seems logical that it would be inherently simple. However the issue really is on the platform you are porting to and how many features it currently supports.
Assuming you find all those things easy, then the port is easy.
After investigating this in more detail I have come to the conclusion that the article "Porting Qt for Embedded Linux to Another Operating System" assumes that you are porting Qt to a very "linux-like" OS.
I have attempted this and currently making progress.
Some difficulties:
IDE - I have to manually add all Qt files and fight the compiler with #ifdefs until it builds with all dependencies in place.
Linux(ness) - I've had to disable all Linux/Windows things that are not supported in my target OS: threads, sockets, processes. Even the timers are slightly different.
Tips:
Start small : I compiled QtCore as a standard lib within my IDE, next up is QtGui which is a behemoth compared to QtCore.
I plan to run only a single QThread, so I have to artificially made a Thread object to avoid null pointers. You cannot compile out Thread information as it is key to all QObjects.
So far I have an qeventloop running within a qcoreapplication.
I wrote some inline assembly but had serious difficulties with my IDE and compilation. I left it in C++ and let the assembler handle it for me. Because I am single-threaded, I am not too concerned with shared data/ exclusive access as required by the atomic operations.

Resources