Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Работа WinSock и загрузка CPU Добавлено: 21.06.04 17:15  

Автор вопроса:  x-jek

Ответить

  Ответы Всего ответов: 28  

Номер ответа: 16
Автор ответа:
 Chill



ICQ: 554200 

Вопросов: 101
Ответов: 343
 Профиль | | #16 Добавлено: 24.06.04 13:37
Прои именнованные каналы посмотри на rsdn.ru, сам работать не пробовал, но это, вроде, легче чем winsock...
Насчет твоей проблемы мне пока не ясно в чем дело... я писал клиент-серверные приложения и с использованием winsock.ocx и c использованием winsock api, но проблем не встречал...
У меня сейчас сессия и очень мало времени, может на выходных подумаю над решением твоей проблемы...

Ответить

Номер ответа: 17
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #17
Добавлено: 24.06.04 13:53
Не знаю точного ответа, я не разбирался с кодом, но думаю,чт опроблема в пересылке числа + 1. Очень уж маленький шаг увеличения!И, конечно, большая нагрузка на сеть, но при твоих 100 мбит ето не заметно, а главное припадает на проц. Ведь при 100 мбит получаеться цикл клиента и сервера, отсюда, я думаю, и большая загрузка проца. Посмотри ещё на расход памяти, если он маленький, то мое мнение правда, если ще большой, то ето или код твой паршивый или Visual Basic глючит. П. С. какие активиксы?Активиксы выполняються в отдельном потоку, что ещё больше загружает проц и замедляет скорость. АПИ выполняються в одном потоку с приложением, рекомендую юзать именно их.

Ответить

Номер ответа: 18
Автор ответа:
 Chill



ICQ: 554200 

Вопросов: 101
Ответов: 343
 Профиль | | #18 Добавлено: 24.06.04 18:37
Вопрос:

Возможна ли одновременная работа в одной программе двух Winsock, один работает на приём сообщений (так сказать в режиме ожидания сообщений), а второй - на отправку сообщений ?

Ответ:

А что тебе мешает?

Вот выдержка из MSDN (благополучно работают два сокета):

To create a TCP server
Create a new Standard EXE project.
Change the name of the default form to frmServer.
Change the caption of the form to "TCP Server."
Draw a Winsock control on the form and change its name to tcpServer.
Add two TextBox controls to the form. Name the first txtSendData, and the second txtOutput.

Add the code below to the form.
Private Sub Form_Load()
' Set the LocalPort property to an integer.
' Then invoke the Listen method.
tcpServer.LocalPort = 1001
tcpServer.Listen
frmClient.Show ' Show the client form.
End Sub

Private Sub tcpServer_ConnectionRequest _
(ByVal requestID As Long)
' Check if the control's State is closed. If not,
' close the connection before accepting the new
' connection.
If tcpServer.State <> sckClosed Then _
tcpServer.Close
' Accept the request with the requestID
' parameter.
tcpServer.Accept requestID
End Sub

Private Sub txtSendData_Change()
' The TextBox control named txtSendData
' contains the data to be sent. Whenever the user
' types into the textbox, the string is sent
' using the SendData method.
tcpServer.SendData txtSendData.Text
End Sub

Private Sub tcpServer_DataArrival _
(ByVal bytesTotal As Long)
' Declare a variable for the incoming data.
' Invoke the GetData method and set the Text
' property of a TextBox named txtOutput to
' the data.
Dim strData As String
tcpServer.GetData strData
txtOutput.Text = strData
End Sub

The procedures above create a simple server application. However, to complete the scenario, you must also create a client application.

To create a TCP client Add a new form to the project, and name it frmClient. Change the caption of the form to TCP Client. Add a Winsock control to the form and name it tcpClient. Add two TextBox controls to frmClient. Name the first txtSend, and the second txtOutput. Draw a CommandButton control on the form and name it cmdConnect. Change the caption of the CommandButton control to Connect. Add the code below to the form. Important Be sure to change the value of the RemoteHost property to the friendly name of your computer.

Private Sub Form_Load()
' The name of the Winsock control is tcpClient.
' Note: to specify a remote host, you can use
' either the IP address (ex: "121.111.1.1";) or
' the computer's "friendly" name, as shown here.
tcpClient.RemoteHost = "RemoteComputerName"
tcpClient.RemotePort = 1001
End Sub

Private Sub cmdConnect_Click()
' Invoke the Connect method to initiate a
' connection.
tcpClient.Connect
End Sub

Private Sub txtSendData_Change()
tcpClient.SendData txtSend.Text
End Sub

Private Sub tcpClient_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
tcpClient.GetData strData
txtOutput.Text = strData
End Sub

The code above creates a simple client-server application. To try the two together, run the project, and click Connect. Then type text into the txtSendData TextBox on either form, and the same text will appear in the txtOutput TextBox on the other form.

Sergey Y. Tkachev

Нечаянно наткнулся, может поможет...

Ответить

Номер ответа: 19
Автор ответа:
 x-jek



Вопросов: 2
Ответов: 11
 Профиль | | #19 Добавлено: 24.06.04 19:50
Дело не в том, СКОЛЬКО WinSock'ов будет работать, а в том, что даже уже ОДИН WinSock в режиме непрерывного приема/передачи (такая специфика задачи!) съедает все вычислительные ресурсы CPU.
Этого не наблюдается в приложениях-чатах, т.к. передача сообщений в них происходит короткими порциями и со значительными интервалами времени между ними.
Главную проблему - снижение загрузки проца при непрерывном приеме/передаче - мне пока здесь решить не удалось. Никто похоже, с этим не сталкивался.
Вот только не понимаю как работают программы закачки типа Reget, Flash и подобные им. Наверняка они основаны на том же API, который использован в WinSock (хотя, я уже говорил ранее, что я использовал и чистый API - получил тот же результат). Видимо проблема лежит в самом VB или в одном из его обновлений (у меня стоит SP5)?
Есть у кого-нибудь соображения на этот счет?

Ответить

Номер ответа: 20
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #20
Добавлено: 24.06.04 22:57
А ты сделай на С и посмотри, изменился ли результат

Ответить

Номер ответа: 21
Автор ответа:
 x-jek



Вопросов: 2
Ответов: 11
 Профиль | | #21 Добавлено: 25.06.04 16:46
Если бы знал С, то сделал бы!

Ответить

Номер ответа: 22
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #22
Добавлено: 26.06.04 02:49
Может это?

Дата: 6 марта 2003 г. | Автор: Виталиум! | Загрузок: 1014
 
Многоканальный Winsock 2 (20 Kb) В этой версии теперь исправлены некоторые ошибки, присущие предыдущей версии, а также добавлены некоторые новые функции.
 
http://www.vbnet.ru/sample/sampledownload.asp?id=288

Ответить

Номер ответа: 23
Автор ответа:
 x-jek



Вопросов: 2
Ответов: 11
 Профиль | | #23 Добавлено: 30.06.04 09:41
Это совсем не то - там простейший чат, причем если его немного переделать и организовать циклическую посылку сообщений, то проц будет опять загружен на 100% !!! То есть глюк WinSock'а подтвердится!

Ответить

Номер ответа: 24
Автор ответа:
 x-jek



Вопросов: 2
Ответов: 11
 Профиль | | #24 Добавлено: 30.06.04 19:16
Чем дальше тема от начала - тем меньше в нее заглядывают...
Полное собрание откровений...

Ответить

Номер ответа: 25
Автор ответа:
 x-jek



Вопросов: 2
Ответов: 11
 Профиль | | #25 Добавлено: 30.06.04 19:19
И ведь что интересно - все работают с WinSock, но дельного совета пока никто не дал...

Ответить

Номер ответа: 26
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #26
Добавлено: 30.06.04 22:08
Знаешь, винсок ето громко сказано, вопервых, ты пробовал и винсок.осх и мой контрол - результат один и тот же, что значит, ты говоришь "То есть глюк WinSock'а подтвердится"?Ты хочешь сказать, что Microsoft написал глючную "ws2_32.dll"???Поверь мне, твоё мнение не правильно!разбирайся в своём коде и не говори, что ето глюк других, кстати, авторитетных разработчиков!Я же понятно написал, твой код вызывает цикл, так оптимизируй его!Ищи другие пути!

Ответить

Номер ответа: 27
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #27
Добавлено: 30.06.04 22:12
Ладно, именно из-за интереся напишу такую же штуку на С++.Времени сейчас у меня малувато, ждать нужно будет где-то 2 дня.

Ответить

Номер ответа: 28
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #28
Добавлено: 03.07.04 19:03
наконец-то нашел свободный часик и написал тоже самое на С++, тем, кто хочет узнать результат грузим здесь: http://dasharm.iatp.org.ua/ironia.zip

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам