begin process at 2010 02 09 17:26:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Divers

 > 

General

 > 

Socket + Thread erreur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Socket + Thread erreur

vendredi 29 août 2008 à 08:54:47 | Socket + Thread erreur

Marko007

J'ai un message d'erreur :

"Une seule utilisation de chaque adresse de socket (protocole/adresse réseau/port)
est habituellement autorisée."


Mon application possède deux forms, qui se "Form.SHOW" et se "Me.CLOSE" avec :

FormLoad =

    Dim tcpClientConnect As TcpClient
    Dim port As Int32 = 23
    Dim localAddr As IPAddress = IPAddress.Any  '.Parse("10.50.11.3")
    Dim TcpServer As New TcpListener(localAddr, port)
    Dim stream As NetworkStream
    Private trd1 As New Thread(AddressOf ThreadConn) 'New thread
    Private trd2 As New Thread(AddressOf ThreadData) 'New thread
    Dim Thrdata As [String] = Nothing 'New thread
    Dim Thrconn As [String] = Nothing 'New thread

        TcpServer.Start()

        If trd1.ThreadState <> ThreadState.Running Then

            Threading.Thread.Sleep(1000)
            trd1.IsBackground = True
            trd1.Start()

        End If

Des idées, pour éviter cela ?

Merci,
Marco
vendredi 29 août 2008 à 12:22:27 | Re : Socket + Thread erreur

boutemine

Au moins tu dois renseigner les méthodes ThreadData ThreadConn pour qu'on peut analyser l'erreur

vendredi 29 août 2008 à 13:12:42 | Re : Socket + Thread erreur

Marko007

Volià :

    Private Sub ThreadData()
        Dim i As Integer
        Dim bytes(1024) As [Byte]

        Try
            Do

                i = 0
                'Thrdata = ""
                stream = tcpClientConnect.GetStream()
                i = stream.Read(bytes, 0, bytes.Length)

                If tcpClientConnect.Connected = False Then Exit Do

                If i <> 0 Then

                    Thrdata = Thrdata & Encoding.ASCII.GetString(bytes, 0, i)

                    If StrName = "" And Thrdata <> "*****" & vbCrLf And IntCarUser < 6 Then
                        IntCarUser = IntCarUser + 1

                    End If

                    If StrName = "*****" And StrPassword = "" And Thrdata <> "**" & vbCrLf And IntCarPassword < 3 Then
                        IntCarPassword = IntCarPassword + 1

                    End If


                    If StrName = "" And Thrdata = "*****" & vbCrLf And IntCarUser >= 5 Then
                        StrName = "*****"
                        Thrdata = ""
                        IntCarUser = 0

                       
                    End If


                    If StrName = "*****" And StrPassword = "" And Thrdata = "**" & vbCrLf And IntCarPassword >= 2 Then
                        StrPassword = "**"
                        Thrdata = ""
                        IntCarPassword = 0


                    End If


                    'Error UserName
                    If StrName = "" And Thrdata <> "*****" & vbCrLf And IntCarUser = 6 Then
                        Thrdata = ""
                        IntCarUser = 0

                    End If

                    'Error Password
                    If StrName = "*****" And StrPassword = "" And Thrdata <> "**" & vbCrLf And IntCarPassword = 3 Then
                        Thrdata = ""
                        IntCarPassword = 0

                    End If

                    If IntCarUser >= 7 Then
                        IntCarUser = 0
                    End If

                    If IntCarPassword >= 4 Then
                        IntCarPassword = 0
                    End If



                    If StrName = "*****" And StrPassword = "**" Then
                        MSComm1.Output = Thrdata
                        Thrdata = ""
                    End If


                End If

            Loop

        Catch ex As Exception

        End Try
    End Sub


    Private Sub ThreadConn()

        If TcpServer.Pending <> True Then

            tcpClientConnect = TcpServer.AcceptTcpClient
            Try
                stream = tcpClientConnect.GetStream()

 
                trd2.IsBackground = True
                trd2.Start()
   
            Catch ex As Exception

            End Try
        End If

    End Sub


Merci,
Marco
vendredi 29 août 2008 à 13:48:09 | Re : Socket + Thread erreur

akim77

Salut,

Pour être sûr qu'il n'y a pas un autre logiciel  à l'écoute de ton port 23 (Telnet).

Utilise la methode suivante:
 - menu Démarrer/Exécuter, cmd + <Entrée>
 - dans la nouvelle fenêtre, netstat -ano + <Entrée>
 - dans la colonne Adresse locale, cherche celle qui se termine par :23
et note la valeur correspondante dans la dernière colonne (colonne sans
nom, chez moi)
 - fais ensuite tasklist + <Entrée>
 - cherche dans la colonne PID la valeur notée deux lignes plus haut et
regarde dans la première colonne le nom du logiciel qui squatte le port
23...

Si tu ne trouve pas le port 23, tu pourras chercher dans ton code pourquoi
il tente d'ouvrir plusieurs fois une connexion sur le port 23.

A+

Akim


mercredi 10 septembre 2008 à 16:31:00 | Re : Socket + Thread erreur

Marko007

Aucun autre logiciel qui écoute au niveau du port 23 (telnet).

Ce qui se passe, c'est à mon avis ceci : En faisant plusieurs fois un LOAD et CLOSE d'une forme qui execute un thread
gérant une connexion tcpclient + getstream, on atteint le nbre maximum d' utilisation de chaque adresse de socket (protocole/adresse réseau/port) habituellement autorisée... Et cela bug..

Des idées ?
Marco
mardi 16 septembre 2008 à 17:10:25 | Re : Socket + Thread erreur

Marko007

Des idées ? Je sèche...

Merci,
Marco
mardi 16 septembre 2008 à 20:31:14 | Re : Socket + Thread erreur

akim77

Salut,

Tant pis si c'est une lapalissade, mais pourquoi ne pas fermer la connexion pendant le
CLOSE de la forme (qui execute un thread ....................), à priori elle devient inutile.

Akim
mercredi 17 septembre 2008 à 11:39:02 | Re : Socket + Thread erreur

Marko007

Ok, comment ferais-tu ?

Merci,
Marco
mercredi 17 septembre 2008 à 19:46:42 | Re : Socket + Thread erreur

akim77

Salut,

Dans une class Form1 tu aurais quelque chose comme çà:


Private
Sub Form1_FormClosing( ByVal sender As Object , ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me .FormClosing
        '.................................
        tcpClientConnect.Close()
        TcpServer.Stop()
       ' .................................

End Sub

Akim




Cette discussion est classée dans : port, erreur, socket, thread, trd1


Répondre à ce message

Sujets en rapport avec ce message

thread et dllActiveX... [ par lamalice83 ] Salut à tous,dans une dllActiveX, j'ouvre un port COM avec createFile, j'envois des données, et je veux créer un thread pour lire en permanence tous c pb d'automation avec Outlook et une thread [ par MELISA ] Bonjour,Je suis confronté depuis 2 jours à une erreur d'automation (l'application a appelé une interface qui était maintenue en ordre pour une thread problème avec les socket en java (Connection timed out) [ par aLCHMEY ] Bonjour   Voilà j'ai un problème avec les  socket en java, je vous explique la situation <p class="Ms Cross-Thread Operation non-valid [ par EricNRC ] Bonjour Tout d'abord Bonne journée à tous! Je tente de programmer avec VB 2005 express et je me bute a une sérieux problèmeJ'aimerais savoir s'il exis problème winsock [ par programmationniste ] j'ai eu un problème avec le socket, en effet j'ai essayé un exemple tout ête our tester, j'ai fait une transmission de donnée via winsock, seulement v erreur 424 objet requis [ par lotoinevb ] je suis trè novice dans ce domaine et j ai un petit programme qui, quand je l'exécute, me dit qu'il y a une erreur d'exécution '424' un objet est requ [VB.NET]Socket [ par shadow1779 ] j'ai vu un bon tuto sur les sockets en VB.NET cependant je me pose quelques questions,déja comment savoir si je suis vraiment connecté au socket (quan erreur 8005 sur vba. "port already open" [ par Ptitdoudou ] Bonjour,J'ai un soucis au niveau de la compilation d'un de mes programmes sur VBA.J'utilise une liaison RS232 et lorsue je compile mon programme, j'ai [WinSock] Pb de connexion [ par nifty ] Bonjour tout le monde !J'ai un ch'ti pb avec le controle winsock.En fait, j'arrive pas à établir la connexion avec l'hôte (qu'est sur mon réseau local Erreur 10035 Winsock... Encore et toujours [ par jrivet ] Salut a vous tous,J utilise le control Winsock ()a un instant donne dans le serveur (lorsqu il demarre).Si bcp de clients attendaient le demarrage du


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales