Click here to Skip to main content
15,885,366 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
See more:
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:

C#
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
Updated 30-Aug-12 3:31am
v2
Comments
[no name] 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)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900