Close
Page 1 of 2 1 2 LastLast
Showing results 1 to 10 of 83

Hybrid View

  1. #1

    Default

    I found a small bug/issue with the latest (21) build:

    I changed my network settings for 2 laptop to use ICS (internet connection sharing) [ethernet link between the 2 and 1 of them only on wireless - this is to see if latency is even smaller that way when KMing] and the slave computer was showing as a black screen on the master one (and the master not at all on the slave) until I went into advanced settings and set the master (the one on the computer with the internet connection) to use the private IP from ICS instead of system default - I think Mojo should be smart enough to guess that it should check both sides if I have multiple network interfaces - some explanation of the colors would help too (what does black and yellow mean exactly ? just seems that blue = good and the others are not so good but what exactly?)
    2,3,5 boxing wow with Wow Open Box and MAMA, give them a try!
    (was 8 Boxing Wow with HotKeyNet and ISBoxer)
    Was streaming on twitch.tv/MooreaTv

  2. #2

    Default

    Mojo's connection stuff isn't finished yet. With the current build, you if you make a change like that you need to shut down both Mojos and then start them both.

    Did you do that?

    Edit: For all problems of this type, please let me know if you shut down all Mojos and restarted all of them before you saw the problem. It makes a big difference to me.

    The color codes aren't finished. The current scheme is temporary. Blue means two socket connections between the computers; purple means one socket connection (they are connected in one direction but not the other); black means no connection.
    �Author of HotkeyNet and Mojo

  3. #3

    Default

    Quote Originally Posted by Freddie View Post
    The color codes aren't finished. The current scheme is temporary. Blue means two socket connections between the computers; purple means one socket connection (they are connected in one direction but not the other); black means no connection.
    I think you are color blind (it's ok, no shame, my dad is too) as it's yellow (or maybe mustard rather as it's a dark yellow) and not purple :-)

    This being said, more seriously/interestingly, why do you need 2 sockets - a socket is bi directional; so you should only need either of the machine to connect to the other; not both
    2,3,5 boxing wow with Wow Open Box and MAMA, give them a try!
    (was 8 Boxing Wow with HotKeyNet and ISBoxer)
    Was streaming on twitch.tv/MooreaTv

  4. #4

    Default

    Quote Originally Posted by Moorea View Post
    This being said, more seriously/interestingly, why do you need 2 sockets - a socket is bi directional; so you should only need either of the machine to connect to the other; not both
    Because I discovered through testing that Windows sockets are capable of making more transmissions per second in one direction than the other. Winsock connections aren't symmetrical in terms of performance.
    �Author of HotkeyNet and Mojo

  5. #5

    Default

    Quote Originally Posted by Freddie View Post
    Because I discovered through testing that Windows sockets are capable of making more transmissions per second in one direction than the other. Winsock connections aren't symmetrical in terms of performance.
    IC, Are you sure it's direction issue ? I think what you may have found is you get more throughput using 2 sockets than using 1 (for the same latency, and depending on stack tuning) but the direction itself shouldn't(*) matter - is the difference really noticeable ? Maybe you can fallback to using 1 socket if somehow you can't get the second one ? (though that may make your code more complicated) - I guess sending all IPs would probably work)


    *: I know TCP/IP pretty well; admittedly I have no clue about windows specifics though so I don't know how the folks in redmond may have botched it up so I guess anything is possible...
    2,3,5 boxing wow with Wow Open Box and MAMA, give them a try!
    (was 8 Boxing Wow with HotKeyNet and ISBoxer)
    Was streaming on twitch.tv/MooreaTv

  6. #6

    Default

    Quote Originally Posted by Moorea View Post
    IC, Are you sure it's direction issue ?
    Yes.

    I think what you may have found is you get more throughput using 2 sockets than using 1
    No, because only one connection is used at a time.

    is the difference really noticeable ?
    Yes, it's quite noticeable during mouseover. That's the only time that Mojo (or HotkeyNet 2 where I first noticed this) tries to make many transmissions per second on the same connection. Cursor motion on the remote is noticeably snappier (a higher FPS rate, so to speak) when the socket connection is used in the preferred direction.

    Maybe you can fallback to using 1 socket if somehow you can't get the second one ? (
    When the program is mature and fully debugged, at that future time, I'll do that. But if I do it now, it will only conceal problems.

    I want the problems to be seen and reported to me so I can fix them.

    I guess sending all IPs would probably work)
    I thought you said that picking different IP addresses from the drop down list didn't fix the problem (or it half solved the problem but not completely). All the IP addresses are on that list. If picking them from the list didn't fix the problem, then sending them automatically won't fix it either.

    In any case, this idea would have some bad effects because normally, on most computers, all the IPs would connect and Mojo would end up with many (possibly many dozens) of socket connections between every pair of computers. If you have two PCs and each one has four interfaces, you'd end up with 4 x 4 x 2 = 32 socket connections. During mouseover, every time you moved the mouse, the local PC would send 16 different TCP packets instead of just one. The receiving Mojo would receive every communication multiple times on every one of its adapters. I would have to add serial numbers to the messages so the receiving Mojo could throw away the duplicates.

    To avoid this, I would have to add complicated code to Mojo to audit the number of connections and prune them.

    *: I know TCP/IP pretty well; admittedly I have no clue about windows specifics though so I don't know how the folks in redmond may have botched it up so I guess anything is possible...
    I don't think this asymmetry is particularly surprising, and I don't think it means that Microsoft botched anything.

    There are always limits to peformance because performance can't ever be infinite. Even the speed of light is finite.

    All this proves is that the code for the client end and server end of sockets isn't exactly the same. Since it's not exactly the same it has different maximum performance limits.

    By the way, I only tested this on XP and Vista. It may be different in Win 7. For all I know, the situation is reversed in Win 7.
    Last edited by Freddie : 01-26-2010 at 05:32 AM
    �Author of HotkeyNet and Mojo

  7. #7

    Default

    Quote Originally Posted by Moorea View Post
    I think Mojo should be smart enough to guess that it should check both sides if I have multiple network interfaces
    I'm not sure what you mean by check both sides. Mojo doesn't check anything having to do with IP addresses. Here's how Mojo actually works.

    Each Mojo sends out UDP packets to the whole network saying, "I'm a Mojo, call me if you're interested." Meanwhile other Mojos are listening for these packets on all their adapters. There is no special IP address used.

    Where the specified IP address comes in (the one you had to change) is that when a Mojo sends out the message, "Call me if you're interested," it has to provide an IP address at which it will be called. In other words, it actually says, "If your'e interested, call me at the following IP address: XX.XX.XX.XX." By default, Mojo lets the OS choose this IP address. That didn't work, so you intevened and chose an address manually. That didn't work either.

    What's happening here is (apparently) some peculiarity in the way ICS works. It's possible that it doesn't propagate UDP broadcasts. I don't know anything about ICS. I'll look into it.
    Last edited by Freddie : 01-26-2010 at 02:57 AM
    �Author of HotkeyNet and Mojo

  8. #8

    Default

    Quote Originally Posted by Freddie View Post
    I'm not sure what you mean by check both sides. Mojo doesn't check anything having to do with IP addresses. Here's how Mojo actually works.

    Each Mojo sends out UDP packets to the whole network saying, "I'm a Mojo, call me if you're interested." Meanwhile other Mojos are listening for these packets on all their adapters. There is no special IP address used.

    Where the specified IP address comes in (the one you had to change) is that when a Mojo sends out the message, "Call me if you're interested," it has to provide an IP address at which it will be called. In other words, it actually says, "If your'e interested, call me at the following IP address: XX.XX.XX.XX." By default, Mojo lets the OS choose this IP address. That didn't work, so you intevened and chose an address manually. That didn't work either.
    it did work (after changing the IP in the drop down) for the simple case of 1 mojo using ics connected to the mojo providing ics; what didn't work after that (2 different tests; 2 different posts) is having both the "inside" and "outside" mojos

    so to solve the first case; can you send in that msg all the IPs instead of just one ?


    What's happening here is (apparently) some peculiarity in the way ICS works. It's possible that it doesn't propagate UDP broadcasts. I don't know anything about ICS. I'll look into it.
    it's windows' built in 0 config NAT and it's kind of handy; I expect several people to use it - but maybe not in the weird setup that I have where I try to save 1 wireless latency yet still use extra computers on both side of that nat
    Last edited by Moorea : 01-26-2010 at 03:09 AM
    2,3,5 boxing wow with Wow Open Box and MAMA, give them a try!
    (was 8 Boxing Wow with HotKeyNet and ISBoxer)
    Was streaming on twitch.tv/MooreaTv

  9. #9

    Default

    Quote Originally Posted by Moorea View Post
    so to solve the first case; can you send in that msg all the IPs instead of just one ?
    I need to understand why it's not working before I can fix it. I'll have to set up ICS here, watch the programs in a debugger, log their communications, etc.

    Edit:

    it did work (after changing the IP in the drop down) for the simple case of 1 mojo using ics connected to the mojo providing ics; what didn't work after that (2 different tests; 2 different posts) is having both the "inside" and "outside" mojos
    I don't understand the two cases. I don't know what "inside" and "outside" mean.

    Every IP address that a computer knows about itself is on its drop down list. If at least one of those IP addresses works, you can select it.

    If none of them work, then a human being needs to enter it. Send them all automatically won't help if none of them work.
    Last edited by Freddie : 01-26-2010 at 05:38 AM
    �Author of HotkeyNet and Mojo

  10. #10

    Default

    Quote Originally Posted by Freddie View Post
    I need to understand why it's not working before I can fix it. I'll have to set up ICS here, watch the programs in a debugger, log their communications, etc.

    Given what you said about how it works I know why the connection fails: if you send the default (external) IP to the computer using ICS it can't connect to that IP from it's side of the network, which is why it fails - sending all the IPs and trying them all would work

    ps: maybe we should use the IRC chat or something so we don't create hundreds of post for a simple dialog :-)
    2,3,5 boxing wow with Wow Open Box and MAMA, give them a try!
    (was 8 Boxing Wow with HotKeyNet and ISBoxer)
    Was streaming on twitch.tv/MooreaTv

Posting Rules

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •