Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Socket'ы в .NET Добавлено: 28.12.06 12:32  

Автор вопроса:  jeka
Imports System.Net.Sockets
Imports System.Net
Public Class Form1
    Private Client As New TcpClient
    Private Server As TcpListener
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim stream As NetworkStream
        Dim DataNum As Integer
        Dim bytes(1024) As Byte
        Dim data As String
        If Server.Pending Then
            Client.Close()
            Client = Server.AcceptTcpClient
            Label1.Text = "Connected"
        End If
        If Client.Connected Then
            stream = Client.GetStream
            If stream.DataAvailable Then
                DataNum = stream.Read(bytes, 0, bytes.Length)
                While (DataNum <> 0)
                    Data = System.Text.Encoding.ASCII.GetString(bytes, 0, DataNum)
                    'List.Items.Add(data)
                    Data = ""
                    DataNum = 0
                    If stream.DataAvailable Then
                        DataNum = stream.Read(bytes, 0, bytes.Length)
                    End If
                End While
            End If
        Else
            Label1.Text = "Not Connected"
        End If
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Server = New TcpListener(IPAddress.Parse("127.0.0.1"), "13000")
        Server.Start()
        Timer1.Enabled = True
    End Sub
End Class

Здравствуйте всем.
Может кто-нить решил подобную проблему.
"Как у класса TCPClient узнать подключен ли к нему клиент. Почему-то в вышеприведенном коде свойство Connected остается true даже если к клиенту никто не подключен.

Ответить

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

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



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 28.12.06 18:16
Как у класса TCPClient узнать подключен ли к нему клиент

Ты сам-то понял, что ты спросил???

Ответить

Номер ответа: 2
Автор ответа:
 Sacred Phoenix



ICQ: 304238252 

Вопросов: 52
Ответов: 927
 Профиль | | #2 Добавлено: 28.12.06 20:12
Ну не бум обращать внимания на конкретную формулировку вопроса. Главное понять о чем спросили.

Я вот хочу сказать, что тож намучился дох*** с этим вопросом. Даж пришлось читать MSDN. Фишка вся в том, что св-во .Connected определяет состояние подключенности на момент последней итерации (то бишь отправки/получения данных), в связи с чем мелкомягкие предлагают "фирменный способ": сначала отправить клиенту пакет нулевой длины, потом проверить св-во .Connected. Хотя у меня этот... хм... способ не работал.

Ответить

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



Вопросов: 1
Ответов: 5
 Профиль | | #3 Добавлено: 29.12.06 10:50
Спасибо за совет. С пакетом нулевой длины дейсвительно не работает, а вот с пакетом ненулевой длины работает, но после отправки второго пакета. Ох.. VB2005 the Best, Лучше б я остался на VB6... :)

Ответить

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



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #4
Добавлено: 17.01.07 07:35
Робя, уже устал повторять - ставьте буфер отсылки равным нулю и всё будет работать как часы.

Ответить

Страница: 1 |

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



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