PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Socket Fehler


TheDarkConquerer
2006-12-13, 22:57:46
Ahoi

Ich bin gerade dabei einen kleinen Netzwerkchat in VB.NET zu schreiben (jaja, ich weis, is Pille-Palle, also bitte keine Kommentare dazu) und es will nicht ganz funktionieren.

Also der Server scheint zu laufen (Bringt mir zumind. keinen Fehler, weder bei der Listen noch bei der Accept Funktion).
Mein Problem ist jetzt das mir die Funktion "connect" bei meinem Client einen Socket-Fehler liefert (-1). Wenn ich den mit WSAGetLastError abfange erhalte ich folgendes Ergebnis:

1. Bei dem Versuch auf 127.0.0.1 zu connecten:
Fehlercode 5 (was ja eigentlich ERROR_ACCESS_DENIED ist)

2. Bei dem Versuch auf 192.168.178.22 (meine lokale IP) zu connecten:
Fehlercode 0 (???, ich dachte immer 0 kommt wenn alles geklappt hat)

Der WSAStartup-Aufruf sowie die Socket-Erstellung zuvor waren erfolgreich


Private Sub cmdConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdConnect.Click
Dim IP As String
If connected = False Then
If txtIPSeg1.Text = "" Or txtIPSeg2.Text = "" Or txtIPSeg3.Text = "" Or txtIPSeg4.Text = "" Then
MsgBox("Bitte geben sie eine vollständige IP an, z.B. '192.168.20.1'", MsgBoxStyle.Exclamation)
Exit Sub
ElseIf txtPort.Text = "" Then
MsgBox("Bitte geben sie einen Port mit an", MsgBoxStyle.Exclamation)
Exit Sub
Else

IP = txtIPSeg1.Text & "." & txtIPSeg2.Text & "." & txtIPSeg3.Text & "." & txtIPSeg4.Text
With connectTo
.sin_addr = inet_addr(IP)
.sin_family = AF_INET
.sin_port = htons(CInt(txtPort.Text))
End With

Retval = connect(TransSocket, connectTo, Len(connectTo))
If Retval <> SOCKET_ERROR Then
StatusBar1.Panels(0).Text = "Verbunden"
Else
MsgBox("Verbindung fehlgeschlagen - Error '" & WSAGetLastError() & "'", MsgBoxStyle.Critical)
End If
End If
Else
...
End If
End Sub


Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Retval = WSAStartup(&H202, WSA)
If Retval = 0 Then
TransSocket = socket(AF_INET, SOCK_STREAM, Nothing)
If TransSocket = 0 Then
MsgBox("Fehler - Socket konnte nicht erstellt werden", MsgBoxStyle.Critical)
Close()
End If
Else
MsgBox("Fehler - Socket konnte nicht erstellt werden", MsgBoxStyle.Critical)
Close()
End If
End Sub



Vielleicht war ich ja wieder mal zu "blöd" (hat man mir ja hier schonmal an den Kopf geworfen ^^).

mfg

TDC