.net Framework Socket Problem

E

EliteLucker

Guest
Nabend

ich habe nen Programm das Sockets benutzt

Programm in C# Visual Studio 2008 mit .net 3.5 auf XP SP3 entwickelt

ich bekomm nun unter Windows 7

System.Net.Sockets.SocketException: Der Zugriff auf einen Socket war aufgrund der Zugriffsrechte des Sockets unzulässig

Ich habe es auf WinXP SP3 unter Win 7 veruscht und schon mit "als Admin Ausführen" nix hilft es kommt immer diese Meldung
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Was hast du denn gemacht an der Stelle, wo die Exception kommt ? Poste ggf. mal ein Stück des Quellcodes !

Ist dein Programm eine Normale .exe oder ein Plugin oder ein ASP.NET-Modul ?
 
ist ne .exe es kommt keine Exeption sonder die exe wirft diese Meldung beim starten. Das Programm läuft danach aber ohne die Socket Funktionen

Code auschnitte mit Socket
Code:
using System.Net.Sockets;
...
private Socket receiveSocket;
private byte[] byteData = new byte[4096];
...
receiveSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
receiveSocket.Bind(new IPEndPoint(IPAddress.Parse(strLocalIP), 0));
receiveSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);
byte[] byTrue = new byte[4] { 1, 0, 0, 0 };
byte[] byOut = new byte[4] { 1, 0, 0, 0 };
receiveSocket.IOControl(IOControlCode.ReceiveAll, byTrue, byOut);
receiveSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnReceive), null);
...
        private void OnReceive(IAsyncResult ar)
        {
            try
            {
                int nReceived = receiveSocket.EndReceive(ar);

                ParseData(byteData, nReceived);

                if (!bStopCapturing)
                {
                    byteData = new byte[4096];

                    receiveSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnReceive), null);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Title", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

Hoffe das ist so OK und man kann mir helfen
 
Zuletzt bearbeitet:
ja wenn das aber mehr oder minder nen risiko ist diese zu nutzen was schlägst du vor als alternative?
 
Normal benutzt man UDP oder TCP - je nachdem ob's Verbindungs-orientiert ist oder Paket-orientiert. RAW-Sockets nimmt man nur in sehr speziellen Fällen.

Letztendlich muß das natürlich mit der Gegenstelle zusammenarbeiten. Programmierst du beide Seiten oder liegt das Protokoll fest ?
 
ich lese einkommende TCP packete von einem bestimmten Portrange aus und werte deren Inhalt "String" aus

Ich prgrammiere nur das auslesen die empfangen Informationen sinf fest
 
Das sollte doch auch mit
Code:
new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );
funktionieren. Die Quelladresse kannst du so auch noch auswerten.
 
Ok ich versuch mal beides

Edit:

hier mal beide Fehler meldungen als txt
 
Zuletzt bearbeitet:
Das SetSocketOption mit SocketOptionName.HeaderIncluded geht natürlich beim TCP-Socket nicht - falls du das noch drin hast.
 
jni
könntest du mir den Code mal so anpassen wie du es meintest ich bekomm da nix zum laufen

DANKE
 
Hab das Problem gelöst
nun steht ich vor einem anderen
@jni:
kannst du mir vlt helfen wie ich ausgehenden Packte abfragen kann um darauf zu reagieren?
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh