Avatar billede slapstick Nybegynder
12. august 2003 - 21:05 Der er 21 kommentarer og
1 løsning

problem med winsock listen

jeg er ved at lave et program der skal lytte på port 136 og så skrive ipnummeret på den der connecter i en txtfil
men så vidt jeg kan se lytter min socket aldrig jeg kan ihvertfald ikke connecte med telnet

koden kommer her:

Private Sub Form_Load()

    sock136.LocalPort = 136
    sock136.Listen
   

End Sub

Public Sub sock136_ConnectionRequest(ByVal requestID As Long)

    If sock136.State <> sckClosed Then
        sock136.Close
        sock136.Accept requestID
        MsgBox (sock136.RemoteHost)
    Else
        sock136.Accept requestID
        MsgBox (sock136.RemoteHost)
    End If
   
End Sub
Avatar billede slapstick Nybegynder
12. august 2003 - 22:30 #1
ok nu ser detud til den lytter som den skal
men når jeg connecter til den disconnecter den mig bare med det samme
jeg har tilføjet det her kode


Public Sub sock136_DataArrival(ByVal bytesTotal As Long)
Dim NewData As String
Dim RemoteIP As String

RemoteIP = sock136.RemoteHostIP

    sock136.GetData NewData, vbString, bytesTotal
    MsgBox (NewData & vbCrLf & RemoteIP)
   
End Sub
men den laver ingen msgbox
inden den disconnecter mig
Avatar billede bernhof Nybegynder
16. august 2003 - 11:30 #2
Når den heller ikke at vise en msgbox med RemoteHost i ConnectionRequest efter, at du har accepteret forbindelsen?
Avatar billede sjh Nybegynder
18. august 2003 - 07:30 #3
det er fordi du skal bruge 2 winsocks:


Option Explicit
' indset Winsock (Navn sckListen) og Winsock (Navn sckClient) på en Form1
' telnet <ip> <port>
' Start-> Kør...-> Åbn: telnet 127.0.0.1 136

Private strOut As String

Private Sub Form_Load()
  With sckListen '<- Winsock (Navn sckListen)
      .Protocol = sckTCPProtocol
      .RemotePort = 0
      .LocalPort = 136
      .Listen
  End With
End Sub

Public Sub sckListen_ConnectionRequest(ByVal requestID As Long)
  With sckClient '<- Winsock (Navn sckClient)
      If .State = sckClosed Then
        .Accept requestID
        .SendData "Hallo " & .RemoteHostIP & vbCrLf
        strOut = ""
      End If
  End With
End Sub

Private Sub sckClient_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Dim intSpace As Integer
Dim strCommand As String
Dim strMessage As String
  With sckClient '<- Winsock (Navn sckClient)
      .GetData strData, vbString, bytesTotal
      .SendData strData

        If strData = vbCrLf Then
          intSpace = InStr(strOut, " ")
          If intSpace > 0 Then
            strCommand = Trim$(Left$(strOut, intSpace))
            strMessage = Trim$(Mid$(strOut, intSpace))

              Select Case LCase$(strCommand)
                    Case "msg" ' hvis du skriver: msg test
                      MsgBox strMessage '= test
                    Case "list" ' hvis du skriver: list c:\
                      MsgBox strMessage '= c:\
              End Select

              .SendData "Ok" & vbCrLf
            End If
          strOut = ""
            Else
          strOut = strOut & strData
        End If

  End With
End Sub
Avatar billede sjh Nybegynder
18. august 2003 - 07:53 #4
du kan lige tilføje ...sckClient_Close() så din telserver er klar når client lukker.

Private Sub sckClient_Close()
  sckClient.Close
End Sub
Avatar billede sjh Nybegynder
18. august 2003 - 07:59 #5
og så er telnet default port 23 og ikke 136 ;)

for at skifte port 'telnet <ip/host> <port>'
Avatar billede slapstick Nybegynder
18. august 2003 - 12:41 #6
hej sjh
det er som om den stadigvæk gør præcis det samme
jeg connecter og så er jeg connected et øjeblik så discer den mig og hvis jeg prøver at sende data ryger jeg af med det samme
og ja jeg ved godt at telnet serv er port 23 default hehe men det skal være på port 136 af forskellige årsager
koden som den er nu kommer her:

Private Sub cmdListen_Click()

    With sckListen
        .Protocol = sckTCPProtocol
        .RemotePort = 0
        .LocalPort = 136
        .Listen
    End With
     
    cmdListen.Enabled = False
   
End Sub

Public Sub sckListen_ConnectionRequest(ByVal requestID As Long)
  With sckClient '<- Winsock (Navn sckClient)
      If .State = sckClosed Then
        .Accept requestID
        .SendData "Hallo " & .RemoteHostIP & vbCrLf
        MsgBox (sckClient.RemoteHostIP)
        strOut = ""
      End If
  End With
End Sub

Private Sub sckClient_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Dim intSpace As Integer
Dim strCommand As String
Dim strMessage As String
  With sckClient '<- Winsock (Navn sckClient)
      .GetData strData, vbString, bytesTotal
      .SendData strData

        If strData = vbCrLf Then
          intSpace = InStr(strOut, " ")
          If intSpace > 0 Then
            strCommand = Trim$(Left$(strOut, intSpace))
            strMessage = Trim$(Mid$(strOut, intSpace))

              Select Case LCase$(strCommand)
                    Case "msg" ' hvis du skriver: msg test
                      MsgBox strMessage '= test
                    Case "list" ' hvis du skriver: list c:\
                      MsgBox strMessage '= c:\
              End Select
              .SendData "Ok" & vbCrLf
            End If
          strOut = ""
            Else
          strOut = strOut & strData
        End If

  End With
End Sub
Private Sub sckClient_Close()
  sckClient.Close
End Sub
Avatar billede sjh Nybegynder
18. august 2003 - 13:13 #7
det kunne godt lyde som om at det er en firewall som smider dig af... og hvad er det for noget data du sender... du kan kun skrive til den telserver som jeg har lavet.
Avatar billede sjh Nybegynder
18. august 2003 - 13:16 #8
du skal også bruge:

Private strOut As String
Avatar billede slapstick Nybegynder
18. august 2003 - 13:23 #9
selvom jeg skriver Private strOut As String med ind i så laver den det samme
jeg connecter bare via telnet til localhost men den discer mig bare
Avatar billede slapstick Nybegynder
18. august 2003 - 14:52 #10
det er skummelt
for jeg kan se at den lytter på den rigtige port og fatter simpelthen ik hvad der er galt
Avatar billede sjh Nybegynder
18. august 2003 - 15:00 #11
har du prøvet at tilslutte sådan:
Start-> Kør...-> Åbn: telnet 127.0.0.1 136
Avatar billede slapstick Nybegynder
18. august 2003 - 15:45 #12
det er sådan jeg gør ja
Avatar billede sjh Nybegynder
18. august 2003 - 21:41 #13
hmmm det virker fint hos mig... hvad OS bruger du?
Avatar billede slapstick Nybegynder
18. august 2003 - 23:22 #14
windowsxp
Avatar billede sjh Nybegynder
23. august 2003 - 18:33 #15
så kan jeg ikke se hvad dit problem er.. har fået testede den på winxp og den virker 100%
Avatar billede slapstick Nybegynder
23. august 2003 - 19:06 #16
hmm nu kan jeg se hvad der går galt men kan ikke se hvad der sku være galt med koden
den får ikke accepted ens connection den står bare i TIME_WAIT tilstand :/
Avatar billede sjh Nybegynder
23. august 2003 - 19:12 #17
koden har været testede på både win2k / winxp og den virker 100%.. så må det være dit computer/windows der er noget galt med... er du sikker på du ikke har virus eller en firewall som blokker for programmet.
Avatar billede slapstick Nybegynder
23. august 2003 - 19:15 #18
100 procent sikkert og har testet det på 3 maskiner nu
men accepterer dit svar for den tid du har brugt på det :)
Avatar billede sjh Nybegynder
23. august 2003 - 19:19 #19
virker det ikke på nogle af de 3 computer?
Avatar billede slapstick Nybegynder
23. august 2003 - 19:29 #20
nej ingen af dem connection blir aldrig established den står som sagt bare i time_wait
Avatar billede sjh Nybegynder
23. august 2003 - 20:10 #21
så må du have lavet noget galt i koden... prøv at hente den her:
http://home.get2net.dk/sjh/eksperten/386754/Telnetsrv.zip
Avatar billede slapstick Nybegynder
23. august 2003 - 21:01 #22
ok jeg prøver
tak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging