Почти разорался) WithEvents и AddHandler

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

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

Voffka
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 09.10.2005 (Вс) 12:56

Почти разорался) WithEvents и AddHandler

Сообщение Voffka » 09.10.2005 (Вс) 19:28

Код: Выделить всё
Imports System
Imports System.Net
Imports System.IO
Imports System.Text
Imports Microsoft.VisualBasic
Imports System.Net.Sockets
Public Class frmMain
    Public Socket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
    Public SendData As String
    Public RecvData As String
    Public Sub DataSend(ByVal k As Sockets.Socket, ByVal dat_to_snd As String)
        Dim msg As [Byte]() = System.Text.Encoding.ASCII.GetBytes(dat_to_snd)
        Dim i As Int32 = k.Send(msg)
    End Sub
    Public Function DataReceive(ByVal k As Sockets.Socket)
        Dim z(131072) As [Byte], data As String
        Dim i As Int32 = k.Receive(z)
        data = System.Text.Encoding.ASCII.GetString(z)
        Return data
    End Function
    Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
        Socket.Connect(IPAddress.Parse("213.85.93.46"), 6000)
        AddHandler Socket.Receive, AddressOf btnStatusChecker_Click
    End Sub
    Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
        DataSend(Socket, ".login Lord Vint /s qwerty")
    End Sub
    Private Sub btnStatusChecker_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStatusChecker.Click

    End Sub
End Class


ну вот )) короче надо сделать так, чтобы как только данные приходили на сокет он сразу же вызывал процедуру, которую надо. в данном случае Handles btnLogin.Click

кстати, если WithEvents не добавлять то ругаецца 'Receive' is not an event of 'System.Net.Sockets.Socket' Если же добавить WithEvents вот так:
Код: Выделить всё
Public WithEvents Socket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)

То ругаецца таким образом 'WithEvents' variable does not raise any events и как вариант предлагает исправление а именно убрат ьWithEvents, вот так вот, помогите разобрацца)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.10.2005 (Вс) 21:01

У класса Socket нет событий.
Изображение

Voffka
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 09.10.2005 (Вс) 12:56

Сообщение Voffka » 10.10.2005 (Пн) 20:11

а как тогда реализовать то что я тут описал?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.10.2005 (Пн) 20:25

Прочитай в MSDN статью "Using an Asynchronous Client Socket"
Изображение

Voffka
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 09.10.2005 (Вс) 12:56

Сообщение Voffka » 10.10.2005 (Пн) 22:22

спасибо) почитал) правда пока не поробовал, но на первый взгляд обнадеживает)

Voffka
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 09.10.2005 (Вс) 12:56

Сообщение Voffka » 11.10.2005 (Вт) 21:12

так) наверное я что-то не догнал, когда читал)) я правильно понял, что способ из этой статьи предусматрвиает одно подключение?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.10.2005 (Вт) 23:01

Один сокет - одно подключение, это всегда так. А что?
Изображение

Voffka
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 09.10.2005 (Вс) 12:56

Сообщение Voffka » 12.10.2005 (Ср) 17:14

)) я просто спрашивал, мне же нудно чтобы между клиентом и сервером было одно подключение) т.е. там все "чисто" без потоков и тд?))


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 49

    TopList