2012-11-21 2 views
0

동일한 (windows) 컴퓨터에서 간단한 클라이언트/서버를 실행하고 있습니다. 서버는 프로세스 탐색기에 의해 포착, 서버 EXE의 연결 상태를 다음 포트 9878.에서 수신 대기입니다 :이 유형의 소켓 연결 상태 시나리오의 이름이 있습니까?

Protocol Localhost   Remote   Status 
TCP   localhost:9878 localhost:0  LISTENING 
TCP   localhost:9878 localhost:55555 ESTABLISHED 
TCP   localhost:55555 localhost:9878  ESTABLISHED 

당신이 뭔가 잘못 간 볼 수 있듯이. 내가 관찬하는 문제는 이제 데이터가 서버에서 클라이언트로 무한히 전송된다는 것입니다. 서버가 2 개의 포트에 동일한 머신에 연결되어있는 상황을 볼 수있는 이름이 있습니까? 또한 이것이 일어날 수있는 일반적인 방법이 있습니까? 나를 위해, 그것은 클라이언트가 첫 번째 연결 후 연결을 해제하는 즉시 발생합니다.

+0

아니요, 전혀 잘못된 것이 없습니다. 나는 LISTENING 소켓을 볼 수 있으며, 그 포트와 포트 55555 사이의 연결 양면을 볼 수 있습니다. 우리는 그 문제를 어떻게보아야합니까? – EJP

+0

"연결 해제"의 의미는 무엇입니까? 소켓을 제대로 처리합니까? TELNET을 사용하여 서버 프로세스에 연결하고 연결을 끊을 수 있습니까? – LSerni

+0

문제는 이것이 전체 시스템이 아닌 서버 프로세스의 네트워크 상태라는 것입니다. 그래서 2 개의 확립 된 연결은 거기에 있지 않아야합니다 (나는 가정합니다). – glutz

답변

1

해당 목록에는 아무런 문제가 없습니다. 이것이 바로 로컬 클라이언트가 로컬 서버에 연결할 때 볼 수있는 연결 집합입니다. 당신은 어떤 종류가있는 경우 연결 소켓 서버

에 - 청취 소켓

  • 서버 - - 클라이언트 소켓 연결
  • 클라이언트

    1. 서버 :이 시나리오에서 세 개의 소켓을해야합니까 문제는 아마 당신의 코드에있는 버그 일 것입니다.

  • +0

    나는 클라이언트를 종료 할 때 연결이 끊어지는 것을 예상해야한다고 생각합니까? 왜냐하면 매번 클라이언트를 종료 할 때마다 더 많은 연결이 생성되어 위의 목록이 훨씬 길어지기 때문입니다. – glutz

    +0

    예 그들은 클라이언트를 완전히 종료 한 후에 사라져야합니다. 그러나 클라이언트를 종료 한 후 TIME_WAIT 후에 일부 연결이 표시 될 것으로 예상됩니다. – shf301

    +0

    나는 목록에서 2 번째 소켓을 "* Accepted Socket *"이라고하고 3 번째를 "* Connected Socket *"이라고 부를 것이다. – alk

    관련 문제