Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Максимальная длина отправляемых байтов WinSock Добавлено: 23.11.09 14:18  

Автор вопроса:  Millenium | Web-сайт: www.aliyev.us | ICQ: 629966 
Сколько символов (String) и сколько байов может максимально отправить WinSock ?

Ответить

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

Номер ответа: 1
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #1 Добавлено: 23.11.09 15:11
Я прокачивал через винсок файлы по 150 метров, не супербыстро, но для 100Мбит канала неплохо.

Ответить

Номер ответа: 2
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #2
Добавлено: 23.11.09 15:21
Мне для локалки :) 10-100М
Отправка списков, 100 строк, в каждой строке 200 символов :) Разбил на матрицу.
Раз ограничения нет, то хорошо. Спасибо!

Ответить

Номер ответа: 3
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #3 Добавлено: 23.11.09 15:43
да ерунда, кстати отправка данных по частям будет идти дольше, чем одним сплошным потоком, лишние пересвистывания при очень медленной или сильно загруженной сети будут некстати

Ответить

Номер ответа: 4
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #4
Добавлено: 23.11.09 22:06
Ты мне вот что скажи. Ты динамические элементы WInSock-а создавал? Я создаю (Load) и выгружаю (Unload) тоже. Только вот когда промежуточные элементы выгружаются, не могу проверить массив, загружен ли скажем Winsock(11) из всех загруженных 19?
Как проверить? IsLoaded, IsObject или что?

Ответить

Номер ответа: 5
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #5 Добавлено: 23.11.09 22:53
нее, я этой галематьёй не маялся, точно непомню уже, но помоему у меня массив Object был

Ответить

Номер ответа: 6
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #6
Добавлено: 24.11.09 16:26
Вышли свой пример или подправь мой:
  1. Public Sub sckConnect()
  2.     If lvConn.ListItems.Count > 0 Then lvConn.ListItems.Remove 1
  3.     'Start to listen
  4.     tbServer.Buttons(1).Enabled = False
  5.     tbServer.Buttons(2).Enabled = True
  6.     wsSrv(0).Close
  7.     wsSrv(0).LocalPort = sckPortTL
  8.     wsSrv(0).Listen
  9.     wsLoaded(0) = True
  10. End Sub


При закрытие:
  1. Private Sub wsSrv_Close(Index As Integer)
  2.     WriteLog LoadResString(123) & Space(1) & wsSrv(Index).RemoteHostIP
  3.     If lvConn.ListItems.Count > 0 Then lvConn.ListItems.Remove Index
  4.     If Index > 0 Then
  5.         Unload wsSrv(Index)
  6.         wsLoaded(Index) = False
  7.     End If
  8.     sckCurConn = sckCurConn - 1
  9.     If sckCurConn < 0 Then sckCurConn = 0
  10. End Sub

При подключение:
  1. Private Sub wsSrv_Connect(Index As Integer)
  2.     WriteLog "Connected with " & requestID & " (IP: " & wsSrv(sckCurConn).RemoteHostIP & ")"
  3. End Sub


При запросе на подключение:
  1. Private Sub wsSrv_ConnectionRequest(Index As Integer, ByVal requestID As Long)
  2.     '&#207;&#240;&#232; &#239;&#238;&#239;&#251;&#242;&#234;&#229; &#234;&#235;&#232;&#229;&#237;&#242;&#224; &#239;&#240;&#232;&#241;&#238;&#229;&#228;&#232;&#237;&#232;&#242;&#241;&#255; &#234; &#241;&#229;&#240;&#226;&#229;&#240;&#243;
  3.     sckCurConn = sckCurConn + 1 ' &#239;&#240;&#232;&#225;&#224;&#226;&#232;&#242;&#252; 1 &#232;&#237;&#228;&#229;&#234;&#241;
  4.     WriteLog LoadResString(121) & Space(1) & requestID
  5.     If sckCurConn > sckMaxConn Then
  6.         WriteLog LoadResString(155)
  7.         sckCurConn = sckCurConn - 1
  8.     Else
  9.      
  10.     Load wsSrv(sckCurConn)
  11.     wsLoaded(sckCurConn) = True
  12.     wsSrv(sckCurConn).Accept requestID
  13.     WriteLog LoadResString(122) & Space(1) & requestID & " (IP: " & wsSrv(Index).RemoteHostIP & ")"
  14.      
  15.     lvConn.ListItems.Add sckCurConn, , wsSrv(sckCurConn).RemoteHostIP, , 2  '&#228;&#238;&#225;&#224;&#226;&#235;&#229;&#237;&#232;&#229; &#239;&#229;&#240;&#229;&#236;&#229;&#237;&#237;&#238;&#233; &#226; &#241;&#239;&#232;&#241;&#238;&#234;
  16.     'lvConn.ListItems(sckCurConn).SubItems(1) = Now
  17.     lvConn.ListItems(sckCurConn).EnsureVisible
  18.      
  19.     With lvConn.ListItems(sckCurConn)
  20.         .SubItems(1) = wsSrv(sckCurConn).RemoteHostIP
  21.         .SubItems(2) = Now
  22.         .SubItems(3) = "--:--:--"
  23.         '.SubItems(4) = wsSrv(sckCurConn).Tag
  24.         '.SmallIcon = 3
  25.     End With
  26.     End If
  27.      
  28.     'txtStatus.Text = txtStatus.Text & "Connected to: " & sockMain(sckCurConn).RemoteHostIP & vbCrLf
  29. End Sub

Ответить

Номер ответа: 7
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #7
Добавлено: 27.11.09 23:28
заголовок темы жжот

Ответить

Номер ответа: 8
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #8
Добавлено: 28.11.09 00:50
почему энто жжот? Просто тему по ходу повернул :)
Есть-же всётаки лимит. Скажем если я стринг отпровляю, то длина текста хотя-бы какими-то тысячными символами ограничивается или нет? ОГраничивается. Я это спрашивал. Но точное число байтов незнаю. А решил свою задачку вот так:

На сервере
  1. Private Sub wsSrv_DataArrival(Index As Integer, ByVal bytesTotal As Long)
  2.     Dim wsCmd As String * 4, strData As String, wsData As String, strList As String
  3.     
  4.     wsSrv(Index).GetData wsData
  5.     WriteLog Index & " ~ " & wsData
  6.     
  7.     wsCmd = Left(wsData, 4)
  8.     strData = Mid(wsData, 5)
  9.     Select Case wsCmd
  10.         Case "myid"
  11.             wsSrv(Index).Tag = strData
  12.             lvConn.ListItems.Item(Index).SubItems(4) = strData
  13.         Case "glsc"
  14.             wsSrv(Index).SendData "lcnt" & lvClients.ListItems.Count
  15.         Case "glst"
  16.             For m = 1 To lvClients.ListItems.Count
  17.                 strList = strList & vbCrLf & lvClients.ListItems(m).Text & "|" & lvClients.ListItems(m).SubItems(1) & _
  18.                     "|" & lvClients.ListItems(m).SubItems(2) & "|" & lvClients.ListItems(m).SubItems(3) & _
  19.                     "|" & lvClients.ListItems(m).SubItems(4) & "|" & Null2Minus(lvClients.ListItems(m).SubItems(5))
  20.             Next
  21.             wsSrv(Index).SendData "litm" & strList
  22.         Case "accp" ' Accepted by Me
  23.             For m = 1 To lvClients.ListItems.Count
  24.                 If lvClients.ListItems(m).Text = strData Then
  25.                     lvClients.ListItems(m).SubItems(2) = 1
  26.                     lvClients.ListItems(m).SubItems(3) = Now
  27.                 End If
  28.             Next m
  29.         Case "canc" ' Accepted by Me
  30.             For m = 1 To lvClients.ListItems.Count
  31.                 If lvClients.ListItems(m).Text = strData Then
  32.                     lvClients.ListItems(m).SubItems(2) = 0
  33.                     lvClients.ListItems(m).SubItems(4) = Now
  34.                 End If
  35.             Next m
  36.         Case Else
  37.             WriteLog "Unknown command '" & wsCmd & "' from " & wsSrv(Index).RemoteHostIP
  38.     End Select
  39. End Sub



На клиенте:
  1. Private Sub wsClient_DataArrival(ByVal bytesTotal As Long)
  2. Dim wsGetData As String
  3. Dim wsCmd As String * 4
  4. Dim wsData As String
  5. Dim strRows() As String, strSplittedRow() As String
  6. 'Dim daStrCmd As String * 4, daStrData As String, dsSData As String, lstArr() As String, getRows() As String
  7.     'daStrData = vbNullString
  8.     wsClient.GetData wsGetData, vbString
  9.     
  10.     wsCmd = Left(wsGetData, 4)
  11.     wsData = Mid(wsGetData, 5)
  12.     
  13.     Select Case wsCmd
  14.         Case "litm"
  15.             lstUsers.ListItems.Clear
  16.             strRows = Split(wsData, vbCrLf)
  17.             'for i = 1 to
  18.             For i = 1 To UBound(strRows)
  19.                 strSplittedRow = Split(strRows(i), "|")
  20. '                MsgBox strSplittedRow(0) & vbTab & strSplittedRow(1) & vbTab & strSplittedRow(2) & vbTab & strSplittedRow(3) & vbTab & strSplittedRow(4) & vbTab & strSplittedRow(5)
  21.                 lstUsers.ListItems.Add i, , strSplittedRow(0), , 8 '&#228;&#238;&#225;&#224;&#226;&#235;&#229;&#237;&#232;&#229; &#239;&#229;&#240;&#229;&#236;&#229;&#237;&#237;&#238;&#233; &#226; &#241;&#239;&#232;&#241;&#238;&#234;
  22.                 With lstUsers.ListItems(i)
  23.                     .ListSubItems.Add 1, , strSplittedRow(1)
  24.                     .ListSubItems.Add 2, , strSplittedRow(2)
  25.                     '.ListSubItems.Item(2).ReportIcon = intUsrStatus + 1
  26.                     .ListSubItems.Add 3, , strSplittedRow(3)
  27.                     .ListSubItems.Add 4, , strSplittedRow(4)
  28.                     .ListSubItems.Add 5, , IIf(strSplittedRow(5) >= 0, strSplittedRow(5), vbNullString)
  29.                     '.ListSubItems.Add 6, , datAccepted
  30.                     If strSplittedRow(0) = 0 Then .SmallIcon = 7
  31.                 End With
  32.                 
  33.                 
  34.             Next i
  35.     End Select
  36. '    If daStrCmd = "glsc" Then
  37. '        gLstCount = Val(daStrData)
  38. '    ElseIf daStrCmd = "litm" Then
  39.         'MsgBox "litm"
  40.         'intLstNum = intLstNum + 1
  41.         
  42.         'MsgBox wsData
  43.                         
  44. '        getRows = Split(daStrData, vbCrLf)
  45.         
  46. '        For i = 1 To UBound(getRows)
  47. '            MsgBox getRows(i) 'Split(getRows(i), "|")
  48. '        Next i
  49.         'getRows
  50.         
  51.         'If intLstNum = gLstCount Then intLstNum = 0
  52. '    End If
  53. End Sub

Ответить

Номер ответа: 9
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #9 Добавлено: 28.11.09 04:25
Вопрос о размере байта :-D.
В сокете есть буффер, но он не ограничивает объем передаваемых данных.

Ответить

Номер ответа: 10
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #10
Добавлено: 29.11.09 02:09
Ну ссорри :) О размере буфера. сколько байтов и сколько символов внео вмещается :)

Ответить

Номер ответа: 11
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #11 Добавлено: 29.11.09 02:51
Щас непомню где видел работу с апишками сокета, там кажется был и размер буфера.
Может это в "Тяга-сервер" от SNE, непомню уже.

Ответить

Номер ответа: 12
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #12
Добавлено: 29.11.09 08:22
http://en.wikipedia.org/wiki/Nagle%27s_algorithm

Ответить

Номер ответа: 13
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #13
Добавлено: 01.12.09 16:32
На API-шках писал такие вещи DaSharm (да будет земля ему пухом).

Ответить

Номер ответа: 14
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #14 Добавлено: 02.12.09 18:20
DaSharm (да будет земля ему пухом).

В плане?

Ответить

Номер ответа: 15
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #15 Добавлено: 02.12.09 18:26
Вопрос снят.

Ответить

Страница: 1 |

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



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