VB.NET и СОКЕТЫ :(

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

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

GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

VB.NET и СОКЕТЫ :(

Сообщение GPP » 21.08.2008 (Чт) 2:59

Вот код программы которая слушает определенный порт... Но при запуске зависает! Т.Е не показывает форму приложения... Я думаю дело в цикле... Но как сделать так, чтобы одновременно слушался порт и было видно форму программы... Я слышал что-то про многопоточность... Помогите пожалуйста... Я только начал переходить с VB 6 на .NET. Заранее огромное человеческое СПАСИБО!
Код: Выделить всё
Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports Microsoft.VisualBasic

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        MyTcpListener.Main()

    End Sub
End Class

Class MyTcpListener

    Public Shared Sub Main()

        Try
            ' Set the TcpListener on port 13000.
            Dim port As Int32 = 1001
            Dim localAddr As IPAddress = IPAddress.Parse("192.168.1.2")

            Dim server As New TcpListener(localAddr, port)

            ' Start listening for client requests.
            server.Start()

            ' Buffer for reading data
            Dim bytes(1024) As [Byte]
            Dim data As [String] = Nothing

            ' Enter the listening loop.
            While True
                MsgBox("Waiting for a connection... ")

                ' Perform a blocking call to accept requests.
                ' You could also user server.AcceptSocket() here.
                Dim client As TcpClient = server.AcceptTcpClient()
                MsgBox("Connected!")

                data = Nothing

                ' Get a stream object for reading and writing
                Dim stream As NetworkStream = client.GetStream()

                Dim i As Int32

                ' Loop to receive all the data sent by the client.
                i = stream.Read(bytes, 0, bytes.Length)
                While (i <> 0)
                    ' Translate data bytes to a ASCII string.
                    data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
                    MsgBox(data)

                    ' Process the data sent by the client.
                    data = data.ToUpper()

                    Dim msg As [Byte]() = System.Text.Encoding.Default.GetBytes(data)

                    ' Send back a response.
                    stream.Write(msg, 0, msg.Length)
                    MsgBox(data.ToString)

                    i = stream.Read(bytes, 0, bytes.Length)

                End While

                ' Shutdown and end connection
                client.Close()
            End While
        Catch e As SocketException
            MsgBox(e)
        End Try

        MsgBox("Hit enter to continue...")

    End Sub 'Main

End Class

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: VB.NET и СОКЕТЫ :(

Сообщение Williams » 24.08.2008 (Вс) 15:15

У класса System.Net.Sockets.TcpListener есть асинхронный метод BeginAcceptSocket. Второй вариант - практически любую операцию можно запустить через BackgroundWorker. Следует ознакомится с MSDN, для начала.
И вы думаете, что вас оставят в живых после прочтения этого поста?


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

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

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

    TopList