2012-04-20 1 views
1

나는 tcp를 통해 다른 프로그램에 명령을 보내기 위해 Socket 개체를 사용하고 있습니다.소켓 개체 수명주기

  1. 는/모든 명령의 전송에 Socket 객체를 초기화 세션 를 수신하고 닫습니다하려면 다음

    나는 더 나은 의사 결정이 무엇인지 궁금합니다.

  2. Socket 개체를 초기화하려면이 개체를 사용하여 모든 명령을 보내거나 응답을 받고 프로그램을 닫을 때 닫습니다.

따라서 "동일한"작업을 수행 할 때 얼마나 자주 소켓 객체를 닫아야합니까?

+0

첫 번째 방법은 훨씬 덜 빈번한 방법입니다. 여기에도 정보가 너무 적습니다. – Jon

+0

@ 존, 죄송합니다. 더 정확한 질문을 추가했습니다. 무엇이 더 좋은지 알고 응답을받은 후 소켓을 닫거나 객체를 그대로두고 재사용하여 더 많은 응답을 얻고 더 많은 작업을 수행하십시오. – 0x49D1

+0

동기식 또는 비동기식 방식을 시도 중입니까? 어쨌든 나는 당신의 첫 번째 제안을 취할 것이고, 그것은 자원 처리면에서보다 깨끗한 방법 인 것으로 보인다. – peer

답변

2

응용 프로그램 요구 사항에 따라 다릅니다. 예 : 당신이 smtp 클라이언트를 쓰고 있다고 가정 해 봅시다. 그러면 서버가 당신을 영원히 연결할 수 없게됩니다. 이것은 또한 요청/응답 유형 프로토콜입니다 (예를 들어 어떤 메일을 검사하고 응답을 받기 위해 요청을 보낸 경우). 그런 다음 소켓을 닫아야합니다 요청이 완료되면 하지만 응용 프로그램과 같은 채팅을 쓰고 있다면 소켓을 닫지 않아도됩니다. 채팅 응용 프로그램 서버는 서버에서받은대로 언제든지 다른 사람의 채팅 메시지를 보낼 수 있으므로이 경우 서버는 사용자의 요청없이 데이터를 전송합니다.