C# Socket

kiname

Cadet 3rd Year
Registriert
Nov. 2014
Beiträge
56
Hallo Community,

wenn ich versuche einen Socket zu erstellen habe ich das Problem.
Ich weiß nicht warum aber es tritt eine Socketexception auf.
Ich habe das Bei einem Freund getestet und da funktioniert es komischerweise.
Der Code ist korrekt. An was kann es liegen, dass dieser Fehler auftritt?

Code:
using System.Net.Sockets;

namespace SocketTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        }
    }
}

Das ist der Fehler:
Unbenannt.PNG

mfg
Kiname
 
Was zeigt das Programm dir denn, wenn du auf "View Detail..." klickst?
 
Da weiß ich leider auch nicht weiter :(
 
Hi,

BreakPoint setzen, alle Parameter auslesen und prüfen, welcher der Parameter ein "ungültiges Argument" ist. Ganz einfach.

VG,
Mad
 
Wie meinst du das Madman1209?
ich habs jetz aufgespaltet in

AddressFamily af = AddressFamily.InterNetwork;
SocketType st = SocketType.Stream;
ProtocolType pt = ProtocolType.Tcp;
Socket sock = new Socket(af, st, pt);

wie kann ich jetzt das ungültige Argument herausfinden?
 
MSDN Hilfe:

WSAEINVAL
10022
Invalid argument.
Es wurde ein ungültiges Argument angegeben (z. B. der setsockopt-Funktion wurde eine ungültige Ebene übergeben). In einigen Fällen bezieht sich der Fehlercode auch auf den aktuellen Status des Sockets—z. B. ein Aufruf von accept für einen Socket, der nicht in Wartestellung ist.

Ist das eine Konsolenanwendung? Was für Betriebssysteme verwendet ihr? Zu wenig Infos...
 
Ja es ist eine Konsolenanwendung.
Ich verwende Win7 64-Bit.
 
Mit deinem neuen Code - mach da einen Stopp vor Socket und schau dir deine 3 Variablen an.
 
Hi,

Wie meinst du das Madman1209?

was ein BreakPoint ist ist dir bekannt? Den setzen und den Code per schrittweiser Anweisung durchgehen. Die Parameter auf Validität prüfen.

Kleines Programmierer Einmaleins, eigentlich unnötig da einen Thread aufzumachen...

VG,
Mad
 
Achso ja mit dem normalen Debugging findet man nichts.

@Madman1209
ich dachte du kennst eine debuggingmethode die einzelne stellen einer zeile ausführen lassen kann.

Am Code ist kein Fehler wie schon gesagt der Fehler liegt an meinem Rechner oder dem Account.
Kann es an der Firewall, Netzwerkkarte oder was weis ich liegen? das war die ursprüngliche Frage.
 
@kiname: Dein Netzwerk funktioniert aber schon soweit? Könnte es sein dass irgendeine Sicherheitssoftware dazwischenfunkt und das Erstellen des Sockets verhindert? Personal Firewall oder so? Der Fehlercode im HRESULT deutet für mich darauf hin.
 
Hi,

ich dachte du kennst eine debuggingmethode die einzelne stellen einer zeile ausführen lassen kann.

verstehe dein Problem nicht. Setze den Breakpoint bei der ersten Anweisung, von da an schrittweise weiter.

Am Code ist kein Fehler wie schon gesagt der Fehler liegt an meinem Rechner oder dem Account.

genau deswegen sollst du ja auch prüfen, welcher der drei Parameter bei dir falsch ist...

VG,
Mad
 
HI,
Madman1209 schrieb:
genau deswegen sollst du ja auch prüfen, welcher der drei Parameter bei dir falsch ist...
Wie genau stellst du dir vor Enums auf Richtigkeit zu prüfen?
Sie werden einfach nur dem Konstruktor von Socket übergeben der wiederum anhand der parameter einen passenden Socket erstellt.
Oder kann ich irgendwie den Socketkonstruktor debuggen?

VG,
kiname
Ergänzung ()

@DocWindows

Netzwerk Funktioniert habe auch Internetzugriff laufwerkzugriff usw.
Sicherheitssoftware ist bei allen Rechnern gleich (auch Konfiguriert) da es zentral vom Server verwaltet wird. Da es bei einem Kollegen funktioniert kann ich das ausschließen.
Firewall habe ich auch nichts verändert... ich werd sie aber mal durchschauen.
 
Hi,

und fällt der Kosntruktor dabei schon auf die Nase? Bei deinem Code

AddressFamily af = AddressFamily.InterNetwork;
SocketType st = SocketType.Stream;
ProtocolType pt = ProtocolType.Tcp;
Socket sock = new Socket(af, st, pt);

kommt er da bis zu "Socket sock = ..."? Oder geht davor schon etwas schief? Parameter mal versucht zu ändern? Wir das ganze als Admin gemacht oder mit eingeschränkten Rechten?

VG,
Mad
 
Passt schon ... UAC deaktivieren/Firewall deaktivieren/AV Tools deaktivieren.
Erst danach gingen bei mir so Netzwerkgeschichten in c# immer.

mfg,
Max
 
@Madman1209: Es werden doch nur .net-Enum-Werte übergeben. Was soll da schief gehen?

Lieber mal, wie schon mehrmals hier geschrieben, alle "Störenfriede" deaktivieren.
 
Hi,

@bu.llet

sicher richtig, nur nachdem ich auch schon erlebt hatte, dass eine .NET-Library sich zwar per Using-Direktive einbinden ließ aber trotzdem unmittelbar im Anschluß einen Fehler geworfen hatte frage ich lieber auch bei solchen Sachen nach :)

Ist natürlich die absolute Ausnahme und die "Störenfriede" sollten natürlich weg, keine Frage :)

VG,
Mad
 
Hi
ich habe mittlerweile die Lösung gefunden.
Ich habe das Projekt nicht in C:/ angelegt sondern in einem anderen Laufwerk.
Anscheinend hatte dieses nicht die erforderlichen Berechtigungen um einen Socket zu erstellen.
:freaky:
Auf so einen Fehler kommt man nur durch zufall :(

LG
kiname
 

Ähnliche Themen

Zurück
Oben