Bonjour,

J'ai un proxy qui tourne bien en C++. Je debute le C#, et pour commencer, je voulais "migrer" ce proxy du C++ vers le C#.

Bon, sans rentré dans les details, j'ai mon main, dedans je crée une socket, puis juste apres, pour chaque accept, je crée un thread (classique quoi !)
Dans le thread, je reutilise ma socket. En c++, c'etait simple, je passait la socket en parametre, comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
DWORD WINAPI proxy (LPVOID psocket)
{
[...]
//Recuperation de la valeur du socket (par pointeur)
	SOCKET * ps = (SOCKET *)psocket;
	SOCKET socket_client = *ps;
[...]
}
En C#, c'est apparament moins simple d'utiliser les passages par parametre avec les socket. J'ai utilisé une methode trouvé sur le net :
Je crée ma fonction proxy dans une autre classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    public class MyProxyHandle
    {
        public Socket socket_client;
 
        // Constructeur
        public MyProxyHandle(Socket socket_client)
        {
            this.socket_client = socket_client;
        }
 
        // Méthode de modification du paramètre
        public void SetParam(Socket param)
        {
            this.socket_client = param;
        }
 
        //fonction trhead
        public static void Proxy()
        {
	//[ici je veut utiliser socket_client, mais je n'y arrive pas !]
	}	
    }
L'appel de mon thread se fait ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
MyProxyHandle ProxyHandle = new MyProxyHandle(socket_client);
Thread T = new Thread(new ThreadStart(MyProxyHandle.Proxy));
T.Start();
Ai-je fais une erreur ? Où ? Comment faire ?
Pff, le passage du C++ au C# est plus compliqué qu'il me semblait !

Merci