Results 1 to 10 of 10

Thread: QT sockets on Windows 64 bit vs SOCKET

  1. #1
    Join Date
    Jun 2010
    Posts
    4
    Qt products
    Qt3 Qt4
    Platforms
    Unix/X11 Windows

    Default QT sockets on Windows 64 bit vs SOCKET

    Hi,

    Sockets on Windows are defined as SOCKET type which is basically Windows handle which is 64 bit on Windows 64.

    At the same time, I see that QT socket classes (QAbstractSocket, QSocketNotifier, etc.) work with socket descriptors as "int".

    How does not it cause casting problem?

    To me, it seems like something very basic, that I can't understand here.
    Thanks,
    Mike

  2. #2
    Join Date
    Jun 2010
    Posts
    4
    Qt products
    Qt3 Qt4
    Platforms
    Unix/X11 Windows

    Default Re: QT sockets on Windows 64 bit vs SOCKET

    Anybody have an idea?

  3. #3
    Join Date
    Jan 2006
    Location
    Belgium
    Posts
    1,938
    Thanked 268 Times in 268 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows
    Wiki edits
    20

    Default Re: QT sockets on Windows 64 bit vs SOCKET


  4. #4
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: QT sockets on Windows 64 bit vs SOCKET

    I don't think they are going to change it (binary compatibility is a priority), so it's not really worth thinking about... Unless of course you expect to have more than 2^31 sockets in your application but I guess you'll run out of resources before you reach this count (especially that there are only 65535 ports for each of tcp and udp and other ("portless") protocols are not used that often).
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  5. #5
    Join Date
    Jun 2010
    Posts
    4
    Qt products
    Qt3 Qt4
    Platforms
    Unix/X11 Windows

    Default Re: QT sockets on Windows 64 bit vs SOCKET

    While Unix / Linux indeed define sockets as sequential numbers, on Windows they are handle values, and thus nothing guarantees that a handle is still in 32 bit bounds, even if you have only one socket open. Or, may be there is a statement that handle values are still in 32-bit bounds?

  6. #6
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: QT sockets on Windows 64 bit vs SOCKET

    I'm sure in Windows this is also sequential. Otherwise it would be hard to trace which ones are already taken. But of course that's Windows, so I might be wrong
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  7. #7
    Join Date
    Jun 2010
    Posts
    4
    Qt products
    Qt3 Qt4
    Platforms
    Unix/X11 Windows

    Default Re: QT sockets on Windows 64 bit vs SOCKET

    You NEVER get sequential handles from Windows - I'm speaking about Win32 API, not CRT functions like _open

  8. #8
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: QT sockets on Windows 64 bit vs SOCKET

    Quote Originally Posted by mikets View Post
    You NEVER get sequential handles from Windows - I'm speaking about Win32 API, not CRT functions like _open
    How do you know they are not sequential across the whole system and that they are not reused after being freed?
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


  9. #9
    Join Date
    Sep 2009
    Location
    UK
    Posts
    2,447
    Thanks
    6
    Thanked 348 Times in 333 Posts
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: QT sockets on Windows 64 bit vs SOCKET

    Why don't we check?

    Qt Code:
    1. #define NUM_HANDLES 1000
    2.  
    3. HANDLE h[NUM_HANDLES];
    4. for (int i = 0; i < NUM_HANDLES; i ++)
    5. {
    6. h[i] = NULL;
    7. h[i] = CreateFile("C:\\Temp.log",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    8. }
    9.  
    10. for (int i = 0; i < NUM_HANDLES; i ++)
    11. printf("%08X, ", h[i]);
    To copy to clipboard, switch view to plain text mode 

    gives:

    0000072C, 00000728, 00000724, 00000720, 0000071C, 00000718, 00000714, 00000710, 0000070C, 00000708, 00000704, 00000700, 000006FC, 000006F8, 000006F4, 000006F0, 000006EC, 000006E8, 000006E4, 000006E0, 000006DC, 000006D8, 000006D4, 000006D0, 000006CC, 000006C8, 000006C4, 000006C0, 000006BC, 000006B8, 000006B4, 000006B0, 000006AC, 000006A8, 000006A4, 000006A0, 0000069C, 00000698, 00000694, 00000690, 0000068C, 00000688, 00000684, 00000680, 0000067C, 00000678, 00000674, 00000670, 0000066C, 00000668, 00000664, 00000660, 0000065C, 00000658, 00000654, 00000650, 0000064C, 00000648, 00000644, 00000640, 0000063C, 00000638, 00000634, 00000630, 0000062C, 00000628, 00000624, 00000620, 0000061C, 00000618, 00000614, 00000610, 0000060C, 00000608, 00000604, 00000600, 000005FC, 000005F8, 000005F4, 000005F0, 000005EC, 000005E8, 000005E4, 000005E0, 000005DC, 000005D8, 000005D4, 000005D0, 000005CC, 000005C8, 000005C4, 000005C0, 000005BC, 000005B8, 000005B4, 000005B0, 000005AC, 000005A8, 000005A4, 000005A0, 0000059C, 00000598, 00000594, 00000590, 0000058C, 00000588, 00000584, 00000580, 0000057C, 00000578, 00000574, 00000570, 0000056C, 00000568, 00000564, 00000560, 0000055C, 00000558, 00000554, 00000550, 0000054C, 00000548, 00000544, 00000540, 0000053C, 00000538, 00000534, 00000530, 0000052C, 00000528, 00000524, 00000520, 0000051C, 00000518, 00000514, 00000510, 0000050C, 00000508, 00000504, 00000500, 000004FC, 000004F8, 000004F4, 000004F0, 000004EC, 000004E8, 000004E4, 000004E0, 000004DC, 000004D8, 000004D4, 000004D0, 000004CC, 000004C8, 000004C4, 000004C0, 000004BC, 000004B8, 000004B4, 000004B0, 000004AC, 000004A8, 000004A4, 000004A0, 0000049C, 00000498, 00000494, 00000490, 0000048C, 00000488, 00000484, 00000480, 0000047C, 00000474, 00000470, 0000046C, 00000468, 00000464, 00000460, 0000045C, 00000458, 00000454, 00000450, 0000044C, 00000448, 00000444, 00000440, 0000043C, 00000438, 00000434, 00000430, 0000042C, 00000428, 00000424, 00000420, 0000041C, 00000418, 00000410, 0000040C, 00000408, 00000404, 00000400, 000003FC, 000003F8, 000003F4, 000003F0, 000003EC, 000003E8, 000003E4, 000003E0, 000003DC, 000003D8, 000003D4, 000003D0, 000003CC, 000003C8, 000003C4, 000003C0, 000003BC, 000003B8, 000003B4, 000003B0, 000003AC, 000003A8, 000003A4, 000003A0, 0000039C, 00000398, 00000394, 00000390, 0000038C, 00000388, 00000384, 00000380, 0000037C, 00000378, 00000374, 00000370, 0000036C, 00000368, 00000364, 00000360, 0000035C, 00000358, 00000354, 00000350, 0000034C, 00000348, 00000344, 00000340, 0000033C, 00000338, 00000334, 00000330, 0000032C, 00000328, 00000324, 00000320, 0000031C, 00000318, 00000314, 00000310, 0000030C, 00000308, 00000304, 00000300, 000002FC, 000002F8, 000002F4, 000002F0, 000002EC, 000002E8, 000002E4, 000002E0, 000002DC, 000002D8, 000002D4, 000002D0, 000002CC, 000002C8, 000002C4, 000002C0, 000002BC, 000002B8, 000002B4, 000002B0, 000002AC, 000002A8, 000002A4, 000002A0, 0000029C, 00000298, 00000294, 00000290, 0000028C, 00000288, 00000284, 00000280, 0000027C, 00000278, 00000274, 00000270, 0000026C, 00000268, 00000264, 00000260, 0000025C, 00000258, 00000254, 00000250, 0000024C, 00000248, 00000244, 00000240, 0000023C, 00000238, 00000234, 00000230, 0000022C, 00000228, 00000224, 00000220, 0000021C, 00000218, 00000214, 00000210, 0000020C, 00000208, 00000204, 00000200, 000001FC, 000001F8, 000001F4, 000001F0, 000001EC, 000001E8, 000001E4, 000001E0, 000001DC, 000001D8, 000001D4, 000001D0, 000001CC, 000001C8, 000001C4, 000001C0, 000001BC, 000001B8, 000001B4, 000001B0, 000001AC, 000001A8, 000001A4, 000001A0, 0000019C, 00000198, 00000194, 00000190, 0000018C, 00000188, 00000184, 00000180, 0000017C, 00000178, 00000174, 00000170, 0000016C, 00000168, 00000164, 00000160, 0000015C, 00000158, 00000154, 00000150, 0000014C, 00000148, 00000144, 00000140, 0000013C, 00000138, 00000134, 00000130, 0000012C, 00000128, 00000124, 00000120, 0000011C, 00000118, 00000114, 00000110, 0000010C, 00000108, 00000104, 00000100, 000000FC, 000000F8, 000000F4, 000000F0, 000000EC, 000000E8, 000000E4, 000000E0, 000000DC, 000000D8, 000000D4, 000000D0, 000000CC, 000000C8, 000000C4, 000000C0, 000000BC, 000000B8, 000000B4, 000000B0, 000000AC, 000000A8, 000000A4, 000000A0, 0000009C, 00000098, 00000094, 00000090, 0000008C, 00000088, 00000084, 00000080, 0000007C, 00000078, 00000074, 00000070, 0000006C, 00000068, 00000064, 00000060, 0000005C, 00000058, 00000054, 00000050, 0000004C, 00000048, 00000044, 00000040, 0000003C, 00000038, 00000034, 00000030, 0000002C, 00000028, 00000024, 00000020, 0000001C, 00000018, 00000014, 00000010, 0000000C, 00000008, 00000004, 00000804, 00000808, 0000080C, 00000810, 00000814, 00000818, 0000081C, 00000820, 00000824, 00000828, 0000082C, 00000830, 00000834, 00000838, 0000083C, 00000840, 00000844, 00000848, 0000084C, 00000850, 00000854, 00000858, 0000085C, 00000860, 00000864, 00000868, 0000086C, 00000870, 00000874, 00000878, 0000087C, 00000880, 00000884, 00000888, 0000088C, 00000890, 00000894, 00000898, 0000089C, 000008A0, 000008A4, 000008A8, 000008AC, 000008B0, 000008B4, 000008B8, 000008BC, 000008C0, 000008C4, 000008C8, 000008CC, 000008D0, 000008D4, 000008D8, 000008DC, 000008E0, 000008E4, 000008E8, 000008EC, 000008F0, 000008F4, 000008F8, 000008FC, 00000900, 00000904, 00000908, 0000090C, 00000910, 00000914, 00000918, 0000091C, 00000920, 00000924, 00000928, 0000092C, 00000930, 00000934, 00000938, 0000093C, 00000940, 00000944, 00000948, 0000094C, 00000950, 00000954, 00000958, 0000095C, 00000960, 00000964, 00000968, 0000096C, 00000970, 00000974, 00000978, 0000097C, 00000980, 00000984, 00000988, 0000098C, 00000990, 00000994, 00000998, 0000099C, 000009A0, 000009A4, 000009A8, 000009AC, 000009B0, 000009B4, 000009B8, 000009BC, 000009C0, 000009C4, 000009C8, 000009CC, 000009D0, 000009D4, 000009D8, 000009DC, 000009E0, 000009E4, 000009E8, 000009EC, 000009F0, 000009F4, 000009F8, 000009FC, 00000A00, 00000A04, 00000A08, 00000A0C, 00000A10, 00000A14, 00000A18, 00000A1C, 00000A20, 00000A24, 00000A28, 00000A2C, 00000A30, 00000A34, 00000A38, 00000A3C, 00000A40, 00000A44, 00000A48, 00000A4C, 00000A50, 00000A54, 00000A58, 00000A5C, 00000A60, 00000A64, 00000A68, 00000A6C, 00000A70, 00000A74, 00000A78, 00000A7C, 00000A80, 00000A84, 00000A88, 00000A8C, 00000A90, 00000A94, 00000A98, 00000A9C, 00000AA0, 00000AA4, 00000AA8, 00000AAC, 00000AB0, 00000AB4, 00000AB8, 00000ABC, 00000AC0, 00000AC4, 00000AC8, 00000ACC, 00000AD0, 00000AD4, 00000AD8, 00000ADC, 00000AE0, 00000AE4, 00000AE8, 00000AEC, 00000AF0, 00000AF4, 00000AF8, 00000AFC, 00000B00, 00000B04, 00000B08, 00000B0C, 00000B10, 00000B14, 00000B18, 00000B1C, 00000B20, 00000B24, 00000B28, 00000B2C, 00000B30, 00000B34, 00000B38, 00000B3C, 00000B40, 00000B44, 00000B48, 00000B4C, 00000B50, 00000B54, 00000B58, 00000B5C, 00000B60, 00000B64, 00000B68, 00000B6C, 00000B70, 00000B74, 00000B78, 00000B7C, 00000B80, 00000B84, 00000B88, 00000B8C, 00000B90, 00000B94, 00000B98, 00000B9C, 00000BA0, 00000BA4, 00000BA8, 00000BAC, 00000BB0, 00000BB4, 00000BB8, 00000BBC, 00000BC0, 00000BC4, 00000BC8, 00000BCC, 00000BD0, 00000BD4, 00000BD8, 00000BDC, 00000BE0, 00000BE4, 00000BE8, 00000BEC, 00000BF0, 00000BF4, 00000BF8, 00000BFC, 00000C00, 00000C04, 00000C08, 00000C0C, 00000C10, 00000C14, 00000C18, 00000C1C, 00000C20, 00000C24, 00000C28, 00000C2C, 00000C30, 00000C34, 00000C38, 00000C3C, 00000C40, 00000C44, 00000C48, 00000C4C, 00000C50, 00000C54, 00000C58, 00000C5C, 00000C60, 00000C64, 00000C68, 00000C6C, 00000C70, 00000C74, 00000C78, 00000C7C, 00000C80, 00000C84, 00000C88, 00000C8C, 00000C90, 00000C94, 00000C98, 00000C9C, 00000CA0, 00000CA4, 00000CA8, 00000CAC, 00000CB0, 00000CB4, 00000CB8, 00000CBC, 00000CC0, 00000CC4, 00000CC8, 00000CCC, 00000CD0, 00000CD4, 00000CD8, 00000CDC, 00000CE0, 00000CE4, 00000CE8, 00000CEC, 00000CF0, 00000CF4, 00000CF8, 00000CFC, 00000D00, 00000D04, 00000D08, 00000D0C, 00000D10, 00000D14, 00000D18, 00000D1C, 00000D20, 00000D24, 00000D28, 00000D2C, 00000D30, 00000D34, 00000D38, 00000D3C, 00000D40, 00000D44, 00000D48, 00000D4C, 00000D50, 00000D54, 00000D58, 00000D5C, 00000D60, 00000D64, 00000D68, 00000D6C, 00000D70, 00000D74, 00000D78, 00000D7C, 00000D80, 00000D84, 00000D88, 00000D8C, 00000D90, 00000D94, 00000D98, 00000D9C, 00000DA0, 00000DA4, 00000DA8, 00000DAC, 00000DB0, 00000DB4, 00000DB8, 00000DBC, 00000DC0, 00000DC4, 00000DC8, 00000DCC, 00000DD0, 00000DD4, 00000DD8, 00000DDC, 00000DE0, 00000DE4, 00000DE8, 00000DEC, 00000DF0, 00000DF4, 00000DF8, 00000DFC, 00000E00, 00000E04, 00000E08, 00000E0C, 00000E10, 00000E14, 00000E18, 00000E1C, 00000E20, 00000E24, 00000E28, 00000E2C, 00000E30, 00000E34, 00000E38, 00000E3C, 00000E40, 00000E44, 00000E48, 00000E4C, 00000E50, 00000E54, 00000E58, 00000E5C, 00000E60, 00000E64, 00000E68, 00000E6C, 00000E70, 00000E74, 00000E78, 00000E7C, 00000E80, 00000E84, 00000E88, 00000E8C, 00000E90, 00000E94, 00000E98, 00000E9C, 00000EA0, 00000EA4, 00000EA8, 00000EAC, 00000EB0, 00000EB4, 00000EB8, 00000EBC, 00000EC0, 00000EC4, 00000EC8, 00000ECC, 00000ED0, 00000ED4, 00000ED8, 00000EDC, 00000EE0, 00000EE4, 00000EE8, 00000EEC, 00000EF0, 00000EF4, 00000EF8, 00000EFC, 00000F00, 00000F04, 00000F08, 00000F0C, 00000F10, 00000F14, 00000F18, 00000F1C, 00000F20, 00000F24, 00000F28, 00000F2C, 00000F30, 00000F34, 00000F38, 00000F3C, 00000F40, 00000F44, 00000F48, 00000F4C, 00000F50, 00000F54, 00000F58, 00000F5C, 00000F60,

    Not completely sequential, but close enough!

    [Some output was removed to be under the 10K limit]

  10. #10
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: QT sockets on Windows 64 bit vs SOCKET

    There is obviously a pattern here
    Your biological and technological distinctiveness will be added to our own. Resistance is futile.

    Please ask Qt related questions on the forum and not using private messages or visitor messages.


Similar Threads

  1. Help in Qt Socket Programing in Windows 7?
    By dedy2000 in forum Newbie
    Replies: 2
    Last Post: 7th December 2009, 04:50
  2. UNIX Sockets vs. Qt Sockets Help
    By jmqt in forum Newbie
    Replies: 3
    Last Post: 6th July 2009, 15:26
  3. Events lost in IPC through local socket in Windows
    By yogesh in forum Qt Programming
    Replies: 1
    Last Post: 24th May 2009, 11:38
  4. Need help/suggestion with multithreadding and sockets
    By Floppe in forum Qt Programming
    Replies: 3
    Last Post: 20th March 2009, 14:24
  5. Sockets and OpenGL
    By jonging in forum Qt Programming
    Replies: 1
    Last Post: 19th June 2006, 16:38

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.