12. august 2003 - 21:05Der 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
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
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
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.
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 :/
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.
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.