如何使用C中的原始telnet選項驗證服務器上是否已完成客戶端發出的TELNET命令?驗證TELNET命令是否完成
的recv(...)等待緩衝輸入,但是沒有等到命令完成。
等待是否需要在套接字級別?或者,是否有TELNET選項? (我沒有通過我的搜索找到任何尚未)
人插座顯示,選擇/投票可以用於驗證插座FD是開放的讀/寫;但我不認爲這是正確的方式。
任何幫助或至少方向將是有益的。
如何使用C中的原始telnet選項驗證服務器上是否已完成客戶端發出的TELNET命令?驗證TELNET命令是否完成
的recv(...)等待緩衝輸入,但是沒有等到命令完成。
等待是否需要在套接字級別?或者,是否有TELNET選項? (我沒有通過我的搜索找到任何尚未)
人插座顯示,選擇/投票可以用於驗證插座FD是開放的讀/寫;但我不認爲這是正確的方式。
任何幫助或至少方向將是有益的。
假設你的意思是你在遠程主機上運行,而不是Telnet命令(IAC DON'T ECHO
等)有沒有辦法做你想做的命令。 telnet連接只是一個終端,來回傳遞字符。它不知道這些字符中的任何一個是否代表對另一方程序的命令和響應。
所以,真正的問題是關於如何編程操作一些專爲交互式使用命令行界面。答案將取決於命令行界面本身,而不是您用來連接它的方法(telnet,ssh,RS232串口......在任何情況下您都會遇到同樣的問題)。
,對於需要理解的提示,並且也有足夠的智能,以預期的提示的非外觀響應命令行界面被設計操作人員。編寫一個程序來爲特定的命令行界面執行此操作可能會很困難,除非您很幸運,並且它有一個命令來進入具有結構化響應的非交互式模式。
,人們通常用它來寫那種程序的工具是expect。
謝謝。我會解決這個問題。 – timonti 2015-02-09 14:34:27
當你得到一個提示字符串回來? – 2015-02-09 14:02:01
我正在與多個程序進行通信,這些程序分別具有提示字符串。這是我最初想到的。這將是一個骯髒的解決方式,但我相信有更優雅的東西。 – timonti 2015-02-09 14:03:55
你想寫自己的telnet服務器嗎?您是否閱讀過Telnet規範? Telnet命令對它們具有非常特定的結構。您正在從套接字讀取原始數據,因此您必須解析您收到的內容,如果命令不完整,則必須返回到套接字並讀取更多原始字節以完成解析,然後在循環中讀取和解析直到你收到一個完整的命令,然後你可以處理它。這是基本的socket編程101種東西。 – 2015-02-09 19:18:05