Страница: 1 |
Страница: 1 |
Вопрос: Загруженность процессора -> проблема
Добавлено: 31.12.05 15:45
Автор вопроса: Elkatib
Написал прогу, которая просулшивает определённый порт...вот код:
Private Sub Form_Load()
Do
If winsock.State <> sckConnected And winsock.State <> sckListening Then
winsock.Close
winsock.Listen
End If
DoEvents
Loop
End Sub
Жрёт почти 4 Мб оперативки и 100 % использует процессор. Как сделать, что бы эти цифры были меньше?
Кроме, стандартной библиотеки MSVBVM60.DLL используется ещё как Вы догажались: MSWINSCK.OCX
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #1
Добавлено: 31.12.05 15:52
Вставь Sleep в цикл
Номер ответа: 2
Автор ответа:
Elkatib
Вопросов: 18
Ответов: 25
Профиль | | #2
Добавлено: 31.12.05 16:18
Но тогда ведь невозможно будет получать сообщения, если порт будет слушаться через определённое кол-во времени???
Номер ответа: 3
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #3
Добавлено: 31.12.05 17:12
А кто заставляет паузу делать большую?
Sleep 0
Это просто позволит другим приложениям работать нормально. Процессор всё равно будет показывать 100 %, от этого никуда не уйдёшь, но тормозить не будет.
А на размер памяти (4 Мб) не обращай внимания, к тому же это тебе изменить не удастся.
Номер ответа: 4
Автор ответа:
Elkatib
Вопросов: 18
Ответов: 25
Профиль | | #4
Добавлено: 31.12.05 18:13
Чё-т не хочет всталять в цикл Sleep
Странно, то есть другого выхода никокого нет? Нельзя как-нить подругому слушать порт и занимать мало ресурсов?
Номер ответа: 5
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #5
Добавлено: 31.12.05 19:14
2 Elkatib:
Эх, троянописец.. С Новым Годом!
Sleep 0
Do
If ws.State <> sckConnected And ws.State <> sckListening Then
ws.Close
ws.Listen
End If
DoEvents
Loop
End Sub
можно для ускорения производительности
запрячь это в функцию Private Function Conn() и в таймере, с interval=1000 вызывать: Call Conn().. быстрая производительность гарантируется, тк в Form_Load вызывается функция Loop.. что есть повторяться каждую милисекунду.
Вот код:
Call Conn()
Function Conn()
Sleep 0
If ws.State <> sckConnected And ws.State <> sckListening Then
ws.Close
ws.Listen
End If
Номер ответа: 6
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #6
Добавлено: 31.12.05 20:13
Охренительно...
Вызов listen надо сделать один раз.
А не в цикле.
Номер ответа: 7
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #7
Добавлено: 31.12.05 20:30
А не в цикле
а.. ну да
Номер ответа: 8
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #8
Добавлено: 31.12.05 20:54
я канєшно не в состоянии щас трезво воспринимать вопросі но вроде ж законектится нада и ловить данніе в Winsock1.DataArrival
Номер ответа: 9
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #9
Добавлено: 31.12.05 22:02
Ты абсолютно прав но вопрос не по этой теме
Номер ответа: 10
Автор ответа:
Elkatib
Вопросов: 18
Ответов: 25
Профиль | | #10
Добавлено: 01.01.06 00:49
Хаха нет UL я НЕ пишу троян, пишу прогу что-типа сетевого варианта АСИ но за троян я угораел жёстко.
Спасибо тебе огромное за код теперь прога забирает от силы 10%.
С Новым Годом тебя и всех остальнох тоже.
Спасибо большое Вам!
Но мне кажется эт не последний раз я тут постю.
Номер ответа: 11
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #11
Добавлено: 01.01.06 06:31
приятно что помог тебе, я пошел проводить эксперемееент буду пъяным сайт свой дописывать ) посмтрим.. что выйдет..
Номер ответа: 12
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #12
Добавлено: 01.01.06 06:34
так скачай ууу нас в samples пример локальной Аси, сейчас я нихрена не помню но помоему от sne там... уже написанная, изучи, а потом свою пиши. Во !