소켓은, 사실은 여기 서버의 코드 (클라이언트가이 경우에 파이어 폭스입니다), 방식은 내가 만드는 것입니다 전에이 expirienced 결코 방청내가 이상한 문제가 생겼
while(_IsWorking)
{
if(listener.Socket.Poll(-1, SelectMode.SelectRead))
{
Socket clientSocket = listener.Socket.Accept();
clientSocket.Blocking = false;
clientSocket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true);
}
}
그래서 새 연결이 올 때까지이 listener.Socket.Poll에 걸 기대하고 있습니다 만, 첫 번째 온다 후 영원히 설문 조사에 응답 : 연결에 동의합니다. 나는 더 작은 지연을 가지고 그것을 끊임없이 폴링하려고 시도했다. 10 마이크로 초라고하자. 그런 다음 SelectMode.SelectRead에 결코 들어 가지 않는다. 아마도 클라이언트의 소켓 재사용과 어떻게 든 관련이 있다고 생각하십니까? 어쩌면 클라이언트 소켓을 제대로 종료하지 않고 클라이언트 (파이어 폭스)가 이전 소켓을 사용하기로 결정했을까요?
Context.Socket.Shutdown(SocketShutdown.Both); // context is just a wrapper around socket
Context.Socket.Close();
무슨 문제가 발생할 수 있습니다 :
나는 클라이언트 소켓이 방법을 분리?
내가 설명한 행동에 대한 이유를 발견했다고 생각합니다. 이것은 클라이언트 소켓을 처리하지 않고 연결을 끊지 않았기 때문이며, 새로운 연결을 만들지 못했기 때문에 클라이언트의 것과 관련이있는 것 같아요. (이 경우 파이어 폭스) 가능한 한 한 소켓 (서버에 의해 닫히지 않은 경우)을 사용하고자합니다. – hoodoos
실제로 당신이 언급 한 질문에서 그 사람은 그것을 완전히 잘못 했어요 :) 그리고 실제로 그가 보류중인 수표 사이에 잠을 잤다는 것을 언급하지 않았지만, 나는 실제로 어떤 목적으로 그는 비 차단 방식으로 듣고 있었는지 모르겠다. – hoodoos