2012-01-06 2 views
3

나는 약간의 텍스트 상자와 메뉴 항목 (TUI)이 필요한 루비에 작은 진흙을 쓰고있다. 클라이언트는 텔넷을 통해이 응용 프로그램에 연결합니다. NCurses를 사용하여 시도했지만 소켓 인 IO에는 어떻게 그릴 수 있는지 파악할 수 없습니다 ... 내 텍스트 상자 및 메뉴 위젯을 개발할 수있는 가능한 모든 방법이 있습니다. VT-100 ANSI 터미널 이스케이프 코드를 살펴 보았습니다. 색깔있는 텍스트를 써서 표준 텔넷 어플리케이션과 이벤트 기반의 인터페이스를 만들 수도 있습니다.ncurses를 사용하여 텔넷 인터페이스에서 어떻게 그립니다 ...?

답변

2

일반적인 ncurses 프로그램/루비 스크립트와 소켓을 파이프로 작성하는 것이 더 쉬울 것입니다.

예 : 포트

에 VI를 호스팅하는 터미널을 열고이 포트에 VI 응용 프로그램을 호스팅

mkfifo ncpipe 

nc -l -p 800 0<ncpipe | vi 1>ncpipe 

루트로 다음을 실행 (800) 당신의 ncurses를 프로그램과 다른 터미널 당신은 대체 할 수

telnet 127.0.0.1 800 

VI를 엽니 다 .

참고 : 이것은 nc가 들어오는 연결을 하나만 처리하고 종료하기 때문에 매우 기본적인 예입니다. "socat"과 같은 다른 서버 프로그램이 필요합니다

+0

물론 이것은 단일 연결로만 작동합니까? – Textmode

+0

@Textmode 그는 curses 애플리케이션을 전달할 수 있음을 보여주기 위해 예제로 사용하고 있습니다. 각 사용자에게 새 인스턴스를 제공하는 두 번째 서버 응용 프로그램을 작성할 수 있습니다. – Piccolo

1

NCurses는 STDOUT에 쓰도록 설계되었으므로 IO :: Socket에 쓰는 방법을 이해하지 못하기 때문에 나머지 모드는 ANSI 이스케이프 코드이므로 라인 모드에서 텔넷을 전환하도록 요청합니다 텍스트 상자 위젯 등의 개발에 도움이 될 ANSI 및 VT-100 이스케이프 코드를 사용 의지에 문자 모드 .... 다른 수정 #for 색상

http://www.faqs.org/rfcs/np.html#TELNET를 들어

http://ascii-table.com/ansi-escape-sequences-vt-100.php #합니다.

관련 문제