Re: Как убить слушающий сокет?
От: artem.komisarenko Украина  
Дата: 14.09.13 01:09
Оценка: 6 (1)
Здравствуйте, AlexNek, Вы писали:

AN>Все вроде получается кроме одного — нормального выхода из программы.


Если я правильно всё помню, к потоку ожидающему на сокете можно достучаться с помощью QueueUserAPC.
Как убить слушающий сокет?
От: AlexNek  
Дата: 07.09.13 16:29
Оценка:
Начал играться с одной либой (SmartFox client)
Все вроде получается кроме одного — нормального выхода из программы.
Если под студией еще можно выйти, то обычное приложение даже убить не удается из Task Manager
Зависает здесь

     [Managed to Native Transition]    
>    System.dll!System.Net.Sockets.Socket.Receive(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode) + 0xbd bytes    
     System.dll!System.Net.Sockets.Socket.Receive(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags) + 0x1d bytes    
     System.dll!System.Net.Sockets.NetworkStream.Read(byte[] buffer, int offset, int size) + 0x83 bytes

При попытке как то нагло убить сокет вылетае исключение

                System.Net.Sockets.SocketException occurred
                HResult=-2147467259
                Message=A blocking operation was interrupted by a call to WSACancelBlockingCall
                Source=System
                ErrorCode=10004
                NativeErrorCode=10004
                StackTrace:
                       at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
                  InnerException:

С сокетами и сетью практически не работал, так что куда копать непонятно
Re[2]: Как убить слушающий сокет?
От: AlexNek  
Дата: 15.09.13 16:03
Оценка:
Здравствуйте, artem.komisarenko, Вы писали:

AK>Здравствуйте, AlexNek, Вы писали:


AN>>Все вроде получается кроме одного — нормального выхода из программы.


AK>Если я правильно всё помню, к потоку ожидающему на сокете можно достучаться с помощью QueueUserAPC.

здесь
Что то не догоняюю как это присобачить к сокету
Нашел еще вот что
здесь

Но оказывается, что даже прямого доступа к сокету нет в клиенте smartfox.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.