locked
Out of band data using Windows::Networking::Sockets

    Question

  • I have been working on a Telnet application for the Windows Store and the Telnet server is sending Out of Band data. I am unable to see this data inside my app. Is there a way to access this data in a Windows Store app? Looking at the Windows::Networking namespace doesn't seem to show anything relevant. Since System.Net.Sockets is blocked in .NET it looks like that route won't work either. Is there anything I can do here?

    Thanks.

    Tuesday, January 14, 2014 12:12 AM

Answers

  • Hey, cool! I've been the WinSock PM for about 5 years now, and you're the very first customer -- ever! -- who's said that they use the out-of-band data in TCP/IP!  (Obviously, "old" applications like Telnet and FTP can use it, but the people who work on have never made additional requests to me).  And this extends to System.Net sockets and the Windows Runtime sockets -- the entire OOB concept is one that protocol developers seem to have decided was just not a great idea.

    Regretfully, I don't see any useful switches for you here.  OOB is a feature that we just didn't add support for in the Windows Runtime socket support.


    Network Developer Experience Team (Microsoft)

    Thursday, January 16, 2014 6:48 PM

All replies

  • The entire set of Win32/COM networking APIs is available here:
    http://msdn.microsoft.com/en-us/library/windows/apps/br205759.aspx

    Exactly which function is missing that you need for this?


    Matt Small - Microsoft Escalation Engineer - Forum Moderator
    If my reply answers your question, please mark this post as answered.

    NOTE: If I ask for code, please provide something that I can drop directly into a project and run (including XAML), or an actual application project. I'm trying to help a lot of people, so I don't have time to figure out weird snippets with undefined objects and unknown namespaces.

    Tuesday, January 14, 2014 3:43 PM
    Moderator
  • The missing functions are:

    - setsockopt(socket, SOL_SOCKET, SO_OOBINLINE, TRUE);

    - ioctlsocket(socket, SIOCATMARK, &atmark);

    These are both WinSock functions that are blocked. The functions you listed aren't relevant because they either are Web only and/or don't give you access to the raw underlying socket. For reference, Telnet is using the Urgent flag of TCP as signaling Out of Band data. I need access to something saying this special data has been received and then some way of actually getting it.

    Tuesday, January 14, 2014 10:43 PM
  • Hey, cool! I've been the WinSock PM for about 5 years now, and you're the very first customer -- ever! -- who's said that they use the out-of-band data in TCP/IP!  (Obviously, "old" applications like Telnet and FTP can use it, but the people who work on have never made additional requests to me).  And this extends to System.Net sockets and the Windows Runtime sockets -- the entire OOB concept is one that protocol developers seem to have decided was just not a great idea.

    Regretfully, I don't see any useful switches for you here.  OOB is a feature that we just didn't add support for in the Windows Runtime socket support.


    Network Developer Experience Team (Microsoft)

    Thursday, January 16, 2014 6:48 PM
  • Wow, that's exciting to be the first!

    And I was expecting that. It isn't widely used at all (and for good reason) and I wish Telnet didn't use it but that's just the nature of the beast at this point. I was able to get a workaround working because so far I've only seen the urgent data being sent in response to a Ctrl-C. I can check to see if the byte is missing and if it is I can insert it myself and as of yet it has worked with no issues.

    Thanks for the helpful response!

    Thursday, January 16, 2014 9:11 PM