Сокеты

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Сокеты

Сообщение FireFenix » 22.03.2010 (Пн) 20:54

Делаю клиент-серверное приложение...

В серверном приложении : сделал бесконечный цикл который слушает порт, и при входящем соединении принимает данные...

В клиентской части :
Подключение к серверу + заведено на кнопку
Код: Выделить всё
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim Enc As New System.Text.ASCIIEncoding
        Dim Snd As Integer = Socket.Send(Enc.GetBytes(TextBox1.Text))
End Sub


Запускаю на локальной машине клиент и сервер... После первого нажатия Button2 - нормально отправляется, после последующих - ничего не происходит...

Или чё-то я недокуруил или получается, что для передачи следующего сообщения нужного заново устанавливать соединение?
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Re: Сокеты

Сообщение Dmitriy2003 » 22.03.2010 (Пн) 22:13

Socket.Send - метод (Byte[])

MSDN писал(а):При этой перегрузке требуется буфер, содержащий данные, которые необходимо передать. Значение SocketFlags по умолчанию равно 0, смещение буфера по умолчанию равно 0 и значение по умолчанию количества передаваемых данных установлено равным размеру буфера.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Сокеты

Сообщение FireFenix » 22.03.2010 (Пн) 23:10

Dmitriy2003 писал(а):Socket.Send - метод (Byte[])

Если ТекстБокс был бы пустой - было бы очевидно, что нечего и передавать...

Слил примерчег асинхронных сокетов... вроде работает как нужно...
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Re: Сокеты

Сообщение Dmitriy2003 » 23.03.2010 (Вт) 0:23

А мене проблема нету, почямута :roll:
Вложения
FooBarClientServer.rar
VS2008.С#.NET.FW.2.0
Socket
(23.05 Кб) Скачиваний: 97

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Сокеты

Сообщение FireFenix » 23.03.2010 (Вт) 11:10

Dmitriy2003 писал(а):А мене проблема нету, почямута :roll:

Спасибо, разобрался....

Как оказалось - забыл выключить блокировку Socket.Blocking = False ...
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Сокеты

Сообщение FireFenix » 05.04.2010 (Пн) 14:24

В ходе работы с сокетами - родилось ещё пара вопросов:

1) Если я шлю пакеты по 1Кб (Socket.Send(Data)) и принимаю в буффер 1Кб (Socket.Receive(Buffer)) с буфером по умолчанию (вроде 8Кб)
Всегда ли будут приходить целые пакеты в 1Кб? Или он может их порезать на куски? Т.е. каждый раз нужно проверять длину пакета и дописывать в конец
2) Что быстрее и лучше?
- Маршалить
- Сериализовать
- В ручную формировать массив байтов
и потом пихать в сокет?
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 5

    TopList