![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 | ||
Пользователь
Регистрация: 24.08.2007
Сообщений: 88
|
![]()
Здравствуйте, система такая: есть консольное приложение, при загрузке из основного потока стартует (_beginthread() ) поток с слушающим тцп сокетом, висит на accept - ждет клиента. Когда стучится клиент пойманный сокет передается в конструктор нового класса, в котором опять же через _beginthread() стартует цикл обработки сообщений из этого сокета. То есть имеем 3 уровня потоков: main, AcceptSocket, Client. И все себе работало тихо мирно... пока в один прекрасный день (после "уборки мусора"
![]() Цитата:
Цитата:
пересобирание и тд пробовалось, из более логичного: в конструкторе класса клиента просто напрямую запускал процедуру приема сообщений (не новым потоком) - пашет как каштанка, ждет, обрабатывает, снова ждет... запуск в новом потоке после этого выдал те же 10093. создавался новый сокет в потоке обработки сообщений, удп, байнд вылетает 10093, при прямом запуске из конструктора класса (то есть в аццепт потоке) - норма, слушает, ждет обрабатывает.. уже не знаю что делать... в принципе приложение работало... мы люди не местные, поможите хто чем может ![]() |
||
![]() |
![]() |
![]() |
#2 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]()
Думаю, что ответ кроется во второй цитате. А именно, попробуйте вызывать WSAStartup() в начале каждого потока.
Edit: На MSDN на прямую об этом не говорят, но говорят, что если надо вызывать WSAStartup() 3 раза (причем можно с разными версиями), то надо и WSACleanup() надо вызывать тоже 3 раза. Последний раз редактировалось BOBAH13; 30.04.2010 в 10:03. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 24.08.2007
Сообщений: 88
|
![]()
спасибо) вызов всастартап в каждом потоке решил проблему, хотя странно, в мсднке написано что :" The WSAStartup function initiates use of the Winsock DLL by a process." .
|
![]() |
![]() |
![]() |
#4 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]()
Я написал данную "штуку", т.к. были раньше проблемы в GDI+. Так же надо его инициализировать в каждой нити. Вот и подумал что сходны идеи реализации. Ну так написано что инициализирует, все верно.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
WinSock | profi | Win Api | 8 | 11.01.2010 21:13 |
WinSock | Killbrum | Win Api | 1 | 18.10.2009 15:15 |
WinSock.Ошибка 87 | AngelOfDeath | Работа с сетью в Delphi | 1 | 31.03.2009 10:46 |
События WinSock | telcomp | Win Api | 1 | 13.01.2009 09:26 |
Proxy в WinSock | SHEI'TI | Работа с сетью в Delphi | 3 | 29.03.2008 18:27 |