Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. [SOLVED] How to obtain the list of computers that are in the local network?

[SOLVED] How to obtain the list of computers that are in the local network?

Scheduled Pinned Locked Moved General and Desktop
17 Posts 4 Posters 7.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    Alain38
    wrote on last edited by
    #1

    Hi,
    I need to create a QTreeView to be able to select a file/directory that can be on the local computer, or in another computer of the local network. I know how to access the data that are on the local computer (QFileSystemModel or a derivative). By I do not find a way to access data that are on another computer of the local network.

    I cannot use the QFileDialog::getXXX functions as I need to integrate this explorer in a Dialog window that should show additional elements (content of the file/directory that is quite complex).

    Unfortunately I also cannot force the user to map the remote directory. So, this need that I MUST HAVE TO obtain the list of computers names that are present in the local network. And them to access to the public directories that are on each computer. And, to simplify the problem (;-)), I have no information on this local network.

    Any idea?

    Thanks for your help.

    1 Reply Last reply
    0
    • M Offline
      M Offline
      messi
      wrote on last edited by
      #2

      Do you have a Windows Network? If yes NetBIOS is your friend.
      Otherwise a simple sniffer program with ping each address.

      When you got the list of ip addresses you could accees the remote computer via samba share or ssl?

      1 Reply Last reply
      0
      • A Offline
        A Offline
        Alain38
        wrote on last edited by
        #3

        The software will work on different OS. It is why I am using QT. And I have no information about the network. This mean that I do not have its IP mask.

        1 Reply Last reply
        0
        • M Offline
          M Offline
          messi
          wrote on last edited by
          #4

          But you need information about the network. Without ip and netmask you do not have a change to locate the computers.

          When you start your program you will know your ip address and netmask, doesn't matter if its static or dynamic assigned. With that you can scan your network. Now it depends if you have Router/Bridges in your network as well.

          If you have router/bridges in you network it will be trickier.

          Try to solve your problems in the following order
          1.) Find all computers in the network. Possible solution: ping all addresses of your subnet
          2.) Try to access a specified folder which is accessible from your program. Don't do it the Windows-Way. Use samba/CIFS or webDAV with authentication
          3.) Now you can use QDir, QFile and QFileInfo to view the file information of the shared folder.

          1 Reply Last reply
          0
          • A Offline
            A Offline
            Alain38
            wrote on last edited by
            #5

            The problem is that the code will be integrated in a distributed software. It is why I have written that I know nothing about the network. Even, this network may not exist (stand-alone computer). So, what I need is to do something equivalent to "Network" that we find on Windows Platforms. And this is I do not know to do with QT.

            1 Reply Last reply
            0
            • M Offline
              M Offline
              messi
              wrote on last edited by
              #6

              The "Network" is based on NetBIOS which is a windows only feature. You can work with it when you use samba. Maybe you can resolve this task with "nmap":http://nmap.org/.

              nmap should work under windows, linux and Mac.

              1 Reply Last reply
              0
              • T Offline
                T Offline
                tobias.hunger
                wrote on last edited by
                #7

                In general there is no reliable way to find all hosts on an IP network. ping, nmap, etc. all should get most hosts, but not necessarily all of them and produce a lot of packets to generate their list. This list will then contain all (discovered) hosts on your network, which is usually not what you want: Generally you only care about the hosts that actually offer some service, and not about smart phones that happen to hang in your wlan.

                You might want to look into mDNS, bonjour, avahi (different names for the same thing), which allows hosts to advertise their services on the local network and other hosts to discover them.

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  messi
                  wrote on last edited by
                  #8

                  Tobias is right.

                  But this means that the customers who bought your software must install or enable the mDNS software/service previously.

                  1 Reply Last reply
                  0
                  • A Offline
                    A Offline
                    Alain38
                    wrote on last edited by
                    #9

                    Hi Tobias,
                    What I want is exactly this: discover a set of hosts. Discovering also smartphones that are connected to the network is not a problem. Because I do not need to obtain services from the hosts. I just need to be able to read folders. But I cannot expect that the network be configured using a tool like mDNS. Moreover our software is not for computer specialists. Hence the networks will probably have a "basic (automatic) configuration".

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      messi
                      wrote on last edited by
                      #10

                      In that case I would do it the other way around.
                      Every computer which has a public folder has to register to the server with your software.
                      The network administrator as to send e.g. an email to all users how are responsible to the computer in the network to register to this service. Then you can run your software.

                      The other way around that the server searches trough a unknown network is very complex because there are so many possibilities that a testing of your software is impossible.

                      1 Reply Last reply
                      0
                      • A Offline
                        A Offline
                        Alain38
                        wrote on last edited by
                        #11

                        Hi Juergen,
                        I am just pretty sure that, if customers have to make something so that their computer being seen by my software, they will not do it. In this case it is more simple to force the user of the software to map remote folder to have access to them, or to list them manually.

                        So, for the first version, as it seems that QT cannot answer to my problem, I think that I will use Windows functions. This means that my software will only be able to work on Windows OS or equivalent (virtual machines on Mac). This limitation might be OK for the initial version of the software. And for the next versions I will have to investigate more about other solutions.

                        1 Reply Last reply
                        0
                        • M Offline
                          M Offline
                          messi
                          wrote on last edited by
                          #12

                          Hi Alain, your problem is not a Qt problem.* It is a network problem.*

                          I'm not quite sure but even when you are concentrating on Windows platforms it will not automatically solve your problem. Your customer would need a WINS/NetBIOS server installed to find all computers in the unknown network of your customers. And that is definitely not guaranteed.

                          1 Reply Last reply
                          0
                          • A Offline
                            A Offline
                            Alain38
                            wrote on last edited by
                            #13

                            Yes it si a "network problem". But, as QT has a network module I expected to be able to find a solution using it. For the presence of NetBIOS server, if a standard Windows explorer (when application runs on Windows OS) cannot see the remote computers, my application does not have to see them.

                            For my software I just need to offer, using a QTreeView, a similar view of what is it seen using QFileDialog::getExistingDirectories. Hence, if a computer needs to be "mounted" to be seen (UNIX case) I just need to show monted computers. And if it needs a NetBIOS server to be seen, I just need to show computers known by this server.

                            1 Reply Last reply
                            0
                            • M Offline
                              M Offline
                              messi
                              wrote on last edited by
                              #14

                              Not correctly. First you have to understand the possibilities how to detect computers in a network for each OS. You have to know the advantages and disadvantages of each solution. Create a document and a solution/choose matrix. Then create a realization plan and try to realize a first solution e.g. discovery method for Windows.

                              If your software is important for your customers you can also add some install requirements e.g. mDNS

                              And so on.

                              1 Reply Last reply
                              0
                              • T Offline
                                T Offline
                                tobias.hunger
                                wrote on last edited by
                                #15

                                "Reading a folder" is done by a service running on a host, so you are interested in service discovery.

                                Assuming that you are interested in folders shared by windows machines you could read up on the protocols involved... or just use the windows APIs for discovering them directly (assuming you do not care for non-windows platforms running your application).

                                1 Reply Last reply
                                0
                                • A Offline
                                  A Offline
                                  Alain38
                                  wrote on last edited by
                                  #16

                                  OK. Finally I do not use QT. I directly use Windows functions. This will be a limitation for the application. But a test on a Mac with parallel desktop shown that these functions also work on Mac.

                                  1 Reply Last reply
                                  0
                                  • D Offline
                                    D Offline
                                    danil_mark
                                    wrote on last edited by
                                    #17

                                    [quote author="Alain38" date="1370416822"]OK. Finally I do not use QT. I directly use Windows functions. This will be a limitation for the application. But a test on a Mac with parallel desktop shown that these functions also work on Mac.[/quote]

                                    Excuse me, could you say what exactly you've used?

                                    1 Reply Last reply
                                    0

                                    • Login

                                    • Login or register to search.
                                    • First post
                                      Last post
                                    0
                                    • Categories
                                    • Recent
                                    • Tags
                                    • Popular
                                    • Users
                                    • Groups
                                    • Search
                                    • Get Qt Extensions
                                    • Unsolved