Click here to Skip to main content
12,072,067 members (57,883 online)
Rate this:
 
Please Sign up or sign in to vote.
See more: C# Sockets
I create a aid thread to listen the connection from client,but I failed when I close the Socket.Can you help me?
My code as follow:

class Listener{
   Thread  listenThread;
   Socket  listenSocket;
   bool isListeningContinued=false;
   public Listener(){
     listenSocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
     listenThread=new Thread(new ThreadStart(Listening));
   }
   public void Start(IPEndPoint ipEP){
      listenSocket.Bind(ipEP);
      listenSocket.Listen(100);
      isListeningContinued=true;
      listenThread.Start();
   }
   public void Stop(){
       isListeningContinued=false;
       listenSocket.ShutDown(SocketShutdown.Both);
       listenSocket.Close();
   }
   void Listening(){
      while(isListeningContinued){
          Socket socket=listenSocket.Accept();
          //Do something to receive the data from client
      }
   }
}
I can Start the listen action correctly,but I failed to Stop the listen action , specifically I can't Stop the Accept action running in the aid thread. How can I stop the Accept action from the main thread? Thanks.
Posted 30-Aug-12 4:28am
lzeng19861.4K
Edited 30-Aug-12 4:31am
v2
Comments
Wes Aday 30-Aug-12 10:55am
   
What I have done in the past is connect to myself so the accept drops through and then issue a stop command through the connection.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month


Advertise | Privacy | Mobile
Web01 | 2.8.160208.1 | Last Updated 30 Aug 2012
Copyright © CodeProject, 1999-2016
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100