Plantage

Résolu
zonebleue Messages postés 73 Date d'inscription samedi 15 janvier 2005 Statut Membre Dernière intervention 16 octobre 2007 - 14 févr. 2007 à 09:51
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 22 févr. 2007 à 12:34
bonjour,

je suis en train de faire un programme utilisant Winsock.
mais, meme après avoir fait winsock.close, le programme plante a la  fermeture, et plante visual basic avec

comment arreter ca ?

merci

8 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 févr. 2007 à 12:34
pourquoi.., parce que le port peut être ouvert par une autre application (ou mal fermé par ton appli en cas de crash)

donc même avec SP6, .close avant
++

<hr width="100%" size="2" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 févr. 2007 à 10:00
Salut,
"meme après avoir fait winsock.close, le programme plante a la  fermeture"
Qu est ce qui te fait dire que c'est bien Winsock qui te fait planter?

"comment arreter ca ?"
Peu être en nous montrant ton code (si il n'est pas trop long non plus)

@+: Ju£i?n
Pensez: Réponse acceptée
0
zonebleue Messages postés 73 Date d'inscription samedi 15 janvier 2005 Statut Membre Dernière intervention 16 octobre 2007
15 févr. 2007 à 14:23
il est pas si petit que ça le code...

j'ai découvert que avant la connexion du WinSock, le programme plante pas rien, c'est seulement après la connexion, j'essayerai quand même de te filer un petit bout du code :

Dim tmp As String

Set evt = ws

ws.Connect txtserver, 25
While ws.State <> sckConnected
DoEvents
Wend
nextSend = False
ws.SendData "HELO toto" & vbCrLf
While nextSend = False
DoEvents
Wend
nextSend = False
ws.SendData "MAIL FROM:" & txtfrom.Text & vbCrLf
While nextSend = False
DoEvents
Wend
nextSend = False
ws.SendData "RCPT TO:" & txtto.Text & vbCrLf
While nextSend = False
DoEvents
Wend
nextSend = False
ws.SendData "DATA" & vbCrLf
While nextSend = False
DoEvents
Wend

ws.SendData "To:" & txtto.Text & vbCrLf
ws.SendData "From:" & txtfrom.Text & vbCrLf
ws.SendData "Subject:" & txtsubject.Text & vbCrLf
ws.SendData rtxtmail.Text & vbCrLf
nextSend = False
ws.SendData vbCrLf & "." & vbCrLf
While nextSend = False
DoEvents
Wend

nextSend = False
ws.SendData "QUIT" & vbCrLf
While nextSend = False
DoEvents
Wend

ws.Close
End Sub

Private Sub Command1_Click()
Form2.Show 'faudra que je change le nom de la form..
End Sub

Private Sub evt_Close()
rtxtlog.Text = rtxtlog.Text & vbCrLf & "Deconnexion réalisée"
End Sub

Private Sub evt_Connect()
rtxtlog.Text = rtxtlog.Text & vbCrLf & "Connexion au serveur réalisée"
End Sub

Private Sub evt_ConnectionRequest(ByVal requestID As Long)
rtxtlog.Text = rtxtlog.Text & vbCrLf & "Demande de connexion au serveur"
End Sub

Private Sub evt_DataArrival(ByVal bytesTotal As Long)

On Error Resume Next

Dim tmp As String
If ws.State sckClosed Or ws.State sckClosing Then Exit Sub
ws.GetData tmp, vbString, bytesTotal
rtxtlog.Text = rtxtlog.Text & Chr(13) & tmp
rtxtlog.Refresh
nextSend = True
End Sub
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
15 févr. 2007 à 14:37
salut,
faudrait plus de code....
nextSend est bien déclaré en général?
la première sub, c'est un bouton?

on error resume next pour le data_arrival, çà fait que même s'il y a une erreur on va passer en true?...
tes envoies de data nécessitent un DoEvents (To, Form, etc...)

tu as beau faire un ws.close (d'ailleurs pourquoi un ws et un evt....), si on est toujours dans la sub (à cause des while) on ne l'attendra jamais.
il est préférable de jouer avec un timer plutôt que des while partout, surtout sans vérifier la réponse du serveur...

ta connection nécessite aussi un ws.close avant le connect

et enfin en quittant le formulaire il faut fermer. on peut mêem s'en assurer ainsi :

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Do
        ws.Close
        DoEvents
    Loop Until ws.state = 0
End Sub

++
PCPT   [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zonebleue Messages postés 73 Date d'inscription samedi 15 janvier 2005 Statut Membre Dernière intervention 16 octobre 2007
20 févr. 2007 à 17:57
Non, non et non
J'ai essayé un code tout simple de chat client/serveur, le controle plante à la connexion
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 févr. 2007 à 02:57
comme indiqué : ta connection nécessite aussi un ws.closeavant le ws.connect
0
zonebleue Messages postés 73 Date d'inscription samedi 15 janvier 2005 Statut Membre Dernière intervention 16 octobre 2007
22 févr. 2007 à 09:36
Mais, je comprend pas

pourquoi .Close alors qu'il est pas connecté ?
0
zonebleue Messages postés 73 Date d'inscription samedi 15 janvier 2005 Statut Membre Dernière intervention 16 octobre 2007
22 févr. 2007 à 11:54
Non ca va j'ai trouvé, j'avais WinSock 5.0 je suis passé à WinSock 6.0 et ca plante plus
0
Rejoignez-nous