bonjour à tous
svp comment peut on faire des sockets bidirectionnels en c#
de telle façon que le serveur peut envoyer et reçevoir simultanément et idem pour le client
merci d'avance
bonjour à tous
svp comment peut on faire des sockets bidirectionnels en c#
de telle façon que le serveur peut envoyer et reçevoir simultanément et idem pour le client
merci d'avance
Regarde ce tuto, il devrait te plaire :
http://badger.developpez.com/tutorie...atez-avec-WCF/
Bonjour,
merci pour le tuto,mais ce que j'essaye de faire en premier lieu c'est un petit programme qui me permet de comprendre comment ça marche un simple socket full-duplex, ou plutôt comment modifier le programme ci-dessous pour que l'envoie d'1 message soit bidirectionnel
_ _ _client_ _ _
_ _ _ Serveur_ _ _
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
23 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace cli1 { class Program { static void Main(string[] args) { Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); soc.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"),7777)); byte[] buf = new byte[333]; int n = soc.Receive(buf); string s = ASCIIEncoding.Default.GetString(buf); Console.WriteLine(s); Console.Read(); } } }
Merci
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
23
24 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace serv1 { class Program { static void Main(string[] args) { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sock.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),7777)); sock.Listen(1); Socket actif = sock.Accept(); byte[] buffer = new byte[333]; string s = "je suis serveur"; byte[] ss = ASCIIEncoding.Default.GetBytes(s); actif.Send(ss); } } }
Pour réaliser une communication half - duplex (Mais pas full duplex), tu doit juste mettre des boucles
Pour le client : après le Connect
Pour le serveur :
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
23
24
25
26
27
28
29 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace cli1 { class Program { static void Main(string[] args) { Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); soc.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"),7777)); byte[] buf = new byte[333]; //Par exemple while(true) { int n = soc.Receive(buf); string s = ASCIIEncoding.Default.GetString(buf); Console.WriteLine(s); string txtsend = Console.ReadLine(); //Met ici la fonction send de socket soc.Send(txtsend);//Fonction exemple } } }
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
23
24
25
26
27
28
29
30 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace serv1 { class Program { static void Main(string[] args) { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sock.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),7777)); sock.Listen(1); Socket actif = sock.Accept(); byte[] buffer = new byte[333]; while(true) { string s = Console.ReadLine(); byte[] ss = ASCIIEncoding.Default.GetBytes(s); actif.Send(ss); int n = soc.Receive(buf); string s = ASCIIEncoding.Default.GetString(buf); } } } }
merci à vous![]()
Partager