J'ai songé à créer un programme pour explorer s'il est possible de créer une classe qui contient et le tcpClient du Serveur se connectant à un tcpListener et le tcpListener pour établir une communication entre les deux.

La méthode "AcceptSocket" lance toujours une faute

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Text;
using System.Net.Sockets;
using System.IO; //for Streams 
using System.Diagnostics;
using System.Threading; //for Process 
 
namespace ConsoleApplication1
{
    class Program
    {
 
 
        static TcpListener tcpListener;
        static Socket socketForServer;
        static TcpClient tcpClient;
        static NetworkStream networkStream, networkStream2;
        static StreamWriter streamWriter;
        static StreamReader streamReader;
        static Thread workerThread, workerThreadB;
 
 
        private void Run() {
 
            while (true)
            {
                RunServer();
                System.Threading.Thread.Sleep(5000); //Wait 5 seconds 
            }
 
 
 
        }
 
        private static void RunServer()
        {
            tcpClient = new TcpClient();
 
            if (!tcpClient.Connected)
            {
                try
                {
                    tcpClient.Connect("127.0.0.1", 6666);
                    //put your preferred IP here
                    networkStream = tcpClient.GetStream();
 
                    streamWriter = new StreamWriter(networkStream);
 
                    streamWriter.WriteLine("Halloechen.");
                }
                catch (Exception err) { return; }
 
            }
 
        }
 
 
 
 
  //*******************************************************************************************************************************************************//
 
 
 
 
        private void StartListen()
        {       
  //System.Net.IPAddress.Any
string ipAddress = "127.0.00.1";
System.Net.IPAddress address = System.Net.IPAddress.Parse(ipAddress);
tcpListener = new TcpListener(address, 6666);
            try
            {
                tcpListener.Start();
            }
            catch (Exception err) {        }
 
            while (true)
            {
 
                try
                {
 
                  socketForServer = tcpListener.AcceptSocket();
 
                }catch(Exception err){ Console.WriteLine("ERROR ACCEPTING SOCKET"); }
 
                //Console.WriteLine("xyz"); 
                try
                {
                    networkStream2 = new NetworkStream(socketForServer);
 
                }
                catch (ArgumentException)
                {
 
                    return;
                }
 
                streamReader = new StreamReader(networkStream2);
 
 
 
 
                Console.WriteLine(streamReader.ReadLine()); 
 
 
            }
        }
 
 
 
 
 
 
 
 
 
 
 
 
 
        static void Main(string[] args)
        {
 
 
            Program p = new Program();
 
            workerThread = new Thread(p.Run);
            workerThread.Start();
 
            workerThreadB = new Thread(p.StartListen);
            workerThreadB.Start();
 
 
 
        }
    }
}