클라이언트 프로세스에서 xinetd를 사용하여 서버 프로세스를 시작하도록하고 있습니다. 내가 이해할 때, 서버는 STDIN을 통해 클라이언트로부터 읽을 수 있고 STDOUT을 통해 클라이언트에 쓸 수있는 삶을 살아 간다. 여러 가지 이유 (주로 서버 select() 및 read() 또는 recv()) 사용할 수 있습니다. 어떻게 든 STDIN 및 STDOUT 소켓으로 변환 할 수 및 일반 소켓 I/O 수행 할 수 싶습니다. 내 서버가 연결할 다른 서버와 마찬가지로STDIN/STDOUT을 소켓으로 사용하기
이 작업을 수행 할 수 있습니까? 이것은 심지어 의미있는 질문입니까?
을 보였다. 저의 유일한 망설임은 이전에 설계된 서버가 모든 연결을위한 실제 소켓이 있고 데이터 구조와 알고리즘이 각 소켓이 양방향이라고 가정 한 것과 같이 다른 방식으로 시작되었습니다. 그래서, * 이상적으로, 나는 어떻게 든 STDIN/OUT을 소켓으로 변환하고 현존하는 코드를 그대로 사용할 수있을 것이다. (그렇지 않으면 나는 STD 파일 디스크립터를 특별하게 사용한다.) – Chap
EDIT : 테스트 서버를 실행했다 : ** my $ input =; ** ** log_info ($ me, "Read '$ input'from 클라이언트. "); ** ** STDIN"안녕하세요 클라이언트 \ n "; ** 과 IO :: Socket을 열고 클라이언트에"hello "를 인쇄 한 다음 시도한 클라이언트를 인쇄하십시오. 그것에받을 수 있습니다. 서버가 내 hello를 받았지만 STDIN에 오류가 발생했습니다 : ** Filehandle STDIN은 입력 용으로 만 열렸습니다 **. 필자는 Perl에서 FILENO 수준으로 작업하는 방법을 알지 못하기 때문에 이것이 정확하게 당신의 제안을 표현한 것인지 모르겠습니다. –
Chap
아, Perl을 사용하고 있다는 것을 깨닫지 못했습니다. C 언어의 특정 답변으로 당신을 혼란에 대한 사과. – thuovila