Страница: 1 |
Страница: 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
Ты сам-то понял, что ты спросил???
Номер ответа: 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-сайт:
Профиль | | #4
Добавлено: 17.01.07 07:35
Робя, уже устал повторять - ставьте буфер отсылки равным нулю и всё будет работать как часы.