2011-04-13 3 views
9

가능한 중복을 철거해야합니다
Should I close a socket (TCPIP) after every transaction?는 소켓이 열려 유지 또는

내가 소켓을 사용하여 작동 간 통신의 몇 가지 유형을 가지고 있다고 할 수 있습니다.

내 프로세스가 연결을 설정하고 필요에 따라 데이터를 보내는 열린 상태로 유지해야합니까? 또는 단순히 연결을 설정하고, 원하는 데이터를 보내고, 닫고, 대기 상태를 다시 입력하는 더 나은 방법입니까?

일반적으로이 문제에 대한 접근 방법은 무엇입니까?

+0

호기심에서 벗어난 이유는 무엇입니까? –

+0

필자는 안드로이드 애플리케이션과 C# 사이에 다리를 쌓고 파이프가 적절하거나 (가능할 수도 있다고) 생각하지 않는다. –

+0

프로세스 간 프로세스는 동일한 시스템의 서로 다른 프로세스 간의 통신을 말합니다. 따라서 서로 다른 시스템에 있으면 클라이언트 서버 또는 피어 투 피어가 올바른 단어인지 물어 보았습니다. –

답변

3

로컬 소켓은 TCP/IP 스택을 건너 뛰고 명명 된 파이프를 사용하여 구현되므로 많은 오버 헤드가 없습니다. 소켓을 열고 닫아도 큰 차이는 없습니다.

+1

로컬 소켓은 사용자가 특별히 Unix 도메인 소켓을 여는 경우에만 TCP/IP 스택을 건너 뜁니다. – gby

2

모든 자원은, 파일 소켓, 데이터베이스 연결 또는 하드웨어 장치, 소요 시간을하고, 자원을 가져 보안 액세스를 계산하고 약간의 부기을하기 때문에 열 프로세서와 메모리를 사용합니다.

모든 메시지를 열고 닫으면 CPU와 메모리 리소스가 낭비됩니다.

오랜 시간 동안 열어두면 위험합니다. 그러나 한 쪽이 죽었을 때 자동으로 닫으려면 열어 놓고 최상의 시간 초과 값을 결정해야합니다.

관련 문제