나는 TCP를 사용하여 서버 포트에 연결을 시도하는 리눅스 우분투에서 실행되는 프로그래밍을 가지고 있습니다. 우분투 용 서버 소켓에 연결하는 클라이언트 소켓의 시간 초과 값을 어떻게 알 수 있습니까?리눅스 소켓에 대한 연결 시간 제한은 무엇입니까
감사합니다.
나는 TCP를 사용하여 서버 포트에 연결을 시도하는 리눅스 우분투에서 실행되는 프로그래밍을 가지고 있습니다. 우분투 용 서버 소켓에 연결하는 클라이언트 소켓의 시간 초과 값을 어떻게 알 수 있습니까?리눅스 소켓에 대한 연결 시간 제한은 무엇입니까
감사합니다.
getsockopt(3)
맨 페이지 (SO_RCVTIMEO)부터 살펴 보겠습니다. 그러나 나는 당신의 질문에 그 이상이있을 것이라고 확신합니다.
1) ING connect()
전에, 비 - 블로킹으로 클라이언트 소켓을 설정
가장 좋은 휴대용 솔루션은 알려진 값에 의존 할 수 확인하기 위해 자신의 시간 제한을 사용하는 것입니다. ioctl()
및 FIONBIO
플래그 또는 fcntl()
및 O_NONBLOCK
플래그를 사용하십시오. Win32에서 ioctlsocket()
및 FIONBIO
플래그를 사용하십시오.
2) connect()
원격 피어 : connect()
이 성공하면 모두 연결됩니다.
3) 그러나 connect()
경우 반환 -1하고 자신의 타임 아웃으로 쓰기 위해 단지 select()
) Win32에서 EINPROGRESS
(WSAEWOULDBLOCK
에 소켓 기술자를 errno
을 설정합니다.
그래, 내가 보았지만 SO_RCVTIMEO 및 SO_SENDTIMEO는 send(), recv() 함수 호출을위한 것입니까? connect()가 아닙니다. 그게 맞습니까? – michael