TCP sockety   zodpovězená otázka

VB.NET, Threading, I/O operace

Dobrý den,

mám funkční program pro TCP client/server připojení a posílání dat. potýkám se s vlastní neznalostí jedné věci. Nejde mi po ukončení spojení funkcí Close() úspěšně znovu spojení vytvořit. Hlásí mi to exception, že mySocket již existuje. Nerozumím tomu, kdy se ukončují jednotlivé procesy jako mySocket.Disconnect(True) a serverListener.Stop(), případně kdy použít mySocket.Dispose() tak, aby se po volání OpenPort() mohl připojit pendlujícího klienta. Funkci ConnectionAccept() (v Class myTCPListener) volám funkcí ve Formuláři hned po volání OpenPort().

poradíte mi, kde bych si o tom mohl něco přečíst? Na foru jsem strukturovaný popis nenašel.

Předem děkuji za radu a pomoc!

PH

1) FormTCP.Show()

2) Public Class FormTCP

2a) IPadresa = myIP, Port = myPort

2b) Public PortInListener As New myTCPListener()

 Public Class myTCPListener
    Public localAddr As IPAddress = IPAddress.Parse(IPadresa)
    Public serverListener As New TcpListener(localAddr, Port)
    Public mySocket As Socket

    Public Sub OpenPort()
        serverListener.Start()
    End Sub

    Public Sub ConnectionAccept()
        Try
            While serverListener.Pending = False
                 Application.DoEvents()
            End While
            mySocket = serverListener.AcceptSocket()
        Catch ex As Exception
            serverListener.Stop()
        End Try
    End Sub

    Public Sub Close()
        serverListener.Stop()
        mySocket.Disconnect(True)
    End Sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pomohlo by serverListener úplne zničiť(serverListener.Dispose()) a vytvoriť nový. Taktiež prečo v cykle čakáte na pripojenie, tým zbytočne vyťažíte procesor na plno. Použite dvojicu metód BeginAcceptSocket a EndAcceptSocket, ako napr. v článku o kresliacej tabuli tu na vbnet.cz .

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Proč nepužívám BeginAcceptSocket a EndAcceptSocket? To je jednoduché. Neumím to, ještě jsem se s tím nesetkal. Podvám se na příklady a děkuji za tip!

PH

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback