Alors que la construction application simple client-serveur je dois un barrage routier« ... machine cible activement refusé ... » exception application simple client-serveur
tout en testant ses fonctionnalités dans un boucle- Retour Je reçois toujours
Aucune connexion n'a pu être établie car la machine cible activement refusé 127.0.0.1:6001
c'est le principal programme de serveur, il dispose dans un Task.Run(() => ...)
internal void startListener()
{
ListenerThread = new Thread(new ThreadStart(socketListener));
ListenerThread.Name = "Listener";
ListenerThread.Priority = ThreadPriority.AboveNormal;
ListenerThread.Start();
ComThreadDictionary.Add(ListenerThread.Name, ListenerThread);
}
public void socketListener()
{
_infrastructure_TcpServerAndClient.CreateNewTcpListenerANDstart();
while (true)
{
_infrastructure_TcpServerAndClient.tcpSocket = await _infrastructure_TcpServerAndClient.peerListener.AcceptSocketAsync();
byte[] StreamMessage = new byte[9632];
Thread.Sleep(500);
try
{
MessageLength = _infrastructure_TcpServerAndClient.GetMessageLength(ref
StreamMessage);
}
catch(Exception ex)
{
//"Remote host disconnected"
}
//Do stuff with message...
}
}
c'est ce imbriqué dans cette méthode CreateNewTcpListenerANDstart()
CreateNewTcpListenerANDstart()
{
peerListener = new TcpListener(IPAddress.Any, ComSettings.Port);
peerListener.Start();
}
peerlistener est déclarée à l'intérieur comme celui-ci: TcpListener publique peerListener intérieur _infrastructure_TcpServerAndClient
méthode imbriquée pour recueillir des messages
internal int GetMessageLength(ref byte[] StreamMessage)
{
int MessageLength;
MessageLength = tcpSocket.Receive(StreamMessage, 0, StreamMessage.Length,
SocketFlags.None);
return MessageLength;
}
EDIT J'ai vérifié mon client avec netcat d cela fonctionne il est donc plus hargneux la faute du serveur
EDIT2 le problème est avec cette fonction _infrastructure_TcpServerAndClient()
, quand je prends tout le composant (peerListenr)
hors de lui et il suffit de mettre la base (socketListener()
) méthode tous les travaux bien -> pourquoi est-ce ??
'peerListener 'enveloppe le socket sur lequel vous commencez à écouter, mais vous appelez' AcceptSocket() 'sur' _infrastructure_TcpServerAndClient'. –
corrigez-moi si je me trompe mais j'ai besoin de 'AcceptSockt' pour attendre la connexion entrante et les gérer, ce qui signifie une opération bloquée, n'est-ce pas? – LordTitiKaka
Vous avez raison, mais vous devez probablement appeler 'AcceptSocket()' sur le 'TcpListener' que vous avez démarré (' peerListener'), pas sur un autre. –