2009-10-29 6 views
1

다음은 소켓 스트림에서 가져온 샘플 문자열입니다.C# : windows 명령 프롬프트에서 유닉스 셸 사용 대상 문자열을 변환

\033[H\033[J\033[1;30HSUPERVISOR MAIN MENU\033[6;5H 0. Exit   Exit\033[7;5H 1. Help   Display help\033[8;5H 2. Control  Calling lists and users\033[9;5H 3. Campaign  Campaigns\033[10;5H 4. Manage 

당신은 내가 유닉스/리눅스 쉘을 열 것으로 예상 출력, 작은 따옴표 위의 문자열 뒤에 공백 유형 에코 -e을보고 싶어하고 Enter 키를 누르십시오. 출력은 다음과 같이 표시됩니다.

     SUPERVISOR MAIN MENU 


0. Exit   Exit 
1. Help   Display help 
2. Control  Calling lists and users 
3. Campaign  Campaigns 
4. Manage 

메모리에 있어야한다는 점만 제외하면 동일한 출력이 필요합니다. 나중에 작업해야합니다 ... 아이디어가 있습니다.

+0

그냥 호기심 ... 누구의 소켓 ​​스트림? 왜 그걸 보았 니? –

+0

방금 ​​유닉스 박스 중 하나에 연결되는 소켓을 열었습니다. 우리는 단지 우리가받은 데이터에 관심이 있습니다 ... 거기에 기반하여 명령을 내리고 싶습니다 ... – deostroll

답변

1

몇 시간 전 거의 비슷한 질문을했습니다 : Open Source C# VT100 Server. vt100 이스케이프 명령을 이해하는 클라이언트 라이브러리가 필요합니다.

잠시 동안 검색 한 결과 매우 우수한 vt100 C# 라이브러리를 찾지 못했습니다. 나는 커스텀 원을 시작했는데, 실제로는 왼쪽 화살표와 오른쪽 화살표를 해석하고 백 스페이스를 오래 걸리지 않았다.

운좋게도 vt100 표준은 매우 난잡하고 지나치게 복잡하지 않습니다. 귀하의 예제에서 이스케이프 명령을 이해하기 위해 일부 코드를 채우는 것이 아주 오래 걸릴 것이라고 생각하지 않습니다. 이 링크에는 VT100 escape sequences의 간결한 목록이 있습니다 (조금 아래로 스크롤해야합니다). 좋은 사이트는 vt100.net입니다.

예에서 이스케이프 시퀀스는 8 진수입니다. 첫 번째 이스케이프 시퀀스는 다음과 같습니다.

\033[H 

아래의 ASCII로 변환되고 커서 위치를 설정하는 데 사용됩니다.

ESC [ H 

두번째 아래 ASCII 시퀀스로 변환하여 화면의 마지막 줄 명확한 의미

\033[J 

이다.

ESC [ J 
관련 문제