도움이 필요합니다. Windows7에서 실행되는 Python 2.5.4를 사용하는 레거시 소프트웨어에서 작업 중이며 소켓 연결에서 킵 얼라이브를 활성화해야합니다. 난 당신이Windows 7에서 실행중인 Python 2.5에서 keep-alive 타이머를 설정하는 방법
object.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
사용하여 파이썬에서 킵 얼라이브을 가능하게 할 수 아래의 스레드에서 본 적이
그러나이 설정은 기본 창 2 시간의 살아 타이머를 계속 사용합니다.
다음 API를 사용하여 타이머를 설정할 수도 있지만 Python 2.6 이상에서만 사용할 수 있습니다.
sock.ioctl(socket.SIO_KEEPALIVE_VALS, (1, 10000, 3000))
어쨌든 나는이 SIO_KEEPALIVE_VALS를 (를) python 2.5.4를 사용하여 설정할 수 있습니까? 레거시 코드에는 pywin32-214 모듈도 있습니다. 정말 파이썬 버전을 업그레이드 할 수 없습니다.
은 또한 당신의 도움에 대한 방법 python2.6과 새로운 호출 윈도우 API를
int WSAIoctl(
(socket) s, // descriptor identifying a socket
SIO_KEEPALIVE_VALS, // dwIoControlCode
(LPVOID) lpvInBuffer, // pointer to tcp_keepalive struct
(DWORD) cbInBuffer, // length of input buffer
NULL, // output buffer
0, // size of output buffer
(LPDWORD) lpcbBytesReturned, // number of bytes returned
(LPWSAOVERLAPPED) lpOverlapped, // OVERLAPPED structure
(LPWSAOVERLAPPED_COMPLETION_ROUTINE) lpCompletionRoutine, // completion routine
);
감사 궁금합니다.
참고 : How to change tcp keepalive timer using python script?
여기 https://msdn.microsoft.com/en-us/library/dd877220%28v=vs.85%29.aspx
당신은 할 수 컴파일 GitHub의 https://github.com/rawinput/ioctl의 작은 파이썬 확장했다
C에서 그것을 할 방법입니다 백 포커스 [sock_ioctl] (https://hg.python.org/cpython/file/2.6/Modules/socketmodule.c#l2848) 함수 Python 2.6에서 또는 Ctypes를 사용하여 [WSAIoctl] (https://github.com/twisted/twisted/blob/e38cc25a67747899c6984d6ebaa8d3d134799415/src/twisted/internet/test/_win32ifaces.py#L26) 함수를 호출하십시오. – cgohlke
안녕하세요 @ cgohlke, 귀하의 제안에 감사드립니다. 그러나, 나는 실제로 파이썬과 C/C++를 혼합 시키려고하지 않았다. 나는 그것을 조사하기 시작할 것이다. 좋은 참고 자료에 대한 제안 사항이 있으면 많은 도움이 될 것입니다. 많은 감사. – paulp